К сожалению, каждый браузер имеет собственную реализацию метатега области просмотра. Различные комбинации будут работать в разных браузерах.
Android 2.2: метатег области просмотра, похоже, вообще не поддерживается.
Android 2.3.x/3.x: установив user-scalable=no, вы также самостоятельно отключите масштабирование метатега области просмотра. Вероятно, поэтому ваш параметр ширины не имеет никакого эффекта. Чтобы позволить браузеру масштабировать ваш контент, вам нужно установить user-scalable=yes, а затем, чтобы отключить масштабирование, вы можете установить минимальное и максимальное масштабирование на одно и то же значение, чтобы он не мог уменьшаться или увеличиваться. Играйте с начальным масштабом, пока ваш сайт не будет плотно прилегать.
<meta name="viewport" content="initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,width=device-width,height=device-height,target-densitydpi=device-dpi,user-scalable=yes" />
Android 4.x: применяется то же правило, что и для 2.3.x, за исключением того, что минимальный и максимальный масштабы больше не учитываются, и если вы используете user-scalable=yes, пользователь всегда может масштабировать , установка для него значения «нет» означает, что ваш собственный масштаб игнорируется, это проблема, с которой я столкнулся сейчас, которая привлекла меня к этому вопросу ... Похоже, вы не можете отключить масштабирование и масштабирование одновременно в 4.x.
iOS/Safari (проверено 4.x/5.x): масштабирование работает должным образом, вы можете отключить масштабирование с помощью user-scalable=0 (ключевые слова yes/no don't не работает в 4.x). iOS/Safari также не имеет понятия target-densitydpi, поэтому вам следует его исключить, чтобы избежать ошибок. Вам не нужны минимальные и максимальные значения, так как вы можете отключить масштабирование ожидаемым образом. Используйте только width, иначе вы столкнетесь с ошибкой ориентации iOS а>
<meta name="viewport" content="initial-scale=1.0,width=device-width,user-scalable=0" />
Chrome: масштабы работают так же, как и в iOS, минимальные и максимальные значения учитываются, и вы можете отключить масштабирование с помощью user-scalable=no.
<meta name="viewport" content="initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,width=device-width,user-scalable=no" />
Вывод. Вы можете использовать довольно простой JS для соответствующей настройки контента после базового определения браузера/устройства. Я знаю, что этот тип обнаружения осуждается, но в данном случае это почти неизбежно, потому что каждый поставщик пошел и сделал свое дело! Надеюсь, это поможет людям бороться с областью просмотра, и если у кого-то есть решение для отключения масштабирования в Android 4.x БЕЗ использования области просмотра, сообщите мне об этом.
[РЕДАКТИРОВАТЬ]
Браузер Chrome для Android 4.x (который, по-моему, предустановлен в большинстве стран): вы можете сделать так, чтобы пользователь не мог увеличивать масштаб, а страница отображалась в полноэкранном режиме. Недостаток: вы должны убедиться, что контент имеет фиксированную ширину. Я не тестировал это на более низких версиях Android. Для этого см. пример:
<meta name="viewport" content="width=620, user-scalable=no" />
[РЕДАКТИРОВАТЬ 2]
iOS/Safari 7.1. Начиная с версии 7.1, Apple представила новый флаг для метатега области просмотра под названием minimal-ui
. Чтобы помочь с полноэкранными приложениями, это скрывает адресную строку и нижнюю панель инструментов для полноэкранного режима (не совсем полноэкранный API, но закрывается и не требует согласия пользователя). Он поставляется с изрядной долей ошибок и не работает на iPad.
<meta name="viewport" content="initial-scale=1.0,width=device-width,user-scalable=0, minimal-ui" />
[РЕДАКТИРОВАТЬ 3]
iOS/Safari 8 Beta 4: метатег окна просмотра minimal-ui
, упомянутый в EDIT 2, теперь удален Apple в этом выпуске. Источник — WebKit Notes
person
BrutalDev
schedule
04.09.2012