不幸的是,每个浏览器都有自己的viewport meta标记实现方式。不同的组合将在不同的浏览器上起作用。
Android 2.2: viewport meta标签似乎根本不被支持。
Android 2.3.x/3.x: 通过设置user-scalable=no,您自己也禁用了viewport meta标签的缩放功能,这可能是为什么您的宽度选项没有效果的原因。要允许浏览器缩放您的内容,您需要设置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: Android 4.x遵循与2.3.x相同的规则,除了不再支持最小和最大缩放比例,如果使用user-scalable=yes,则用户可以随时进行缩放,将其设置为“no”表示忽略您自己的缩放比例,这就是我现在遇到的问题...在4.x中似乎无法同时禁用缩放和比例。
iOS/Safari(已测试4.x/5.x): 根据预期工作,您可以使用user-scalable=0来禁用缩放(关键字yes/no在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上禁用缩放而不使用视口的解决方案,请告诉我。
[编辑]
Android 4.x Chrome浏览器(我认为在大多数国家中都是预装的):您可以确保用户无法缩放并且页面全屏显示。 缺点是:您必须确保内容具有固定宽度。 我没有在较低版本的Android上测试过。 要执行此操作,请参见示例:
<meta name="viewport" content="width=620, user-scalable=no" />
[编辑2]
iOS/Safari 7.1:自从v7.1,苹果推出了一个名为minimal-ui
的新标志,用于 viewport meta 标签。为了协助全屏应用程序,它隐藏地址栏和底部工具栏,以获得全屏体验(不完全是 Full Screen API,但接近且不需要用户接受)。它也有一些bug,而且在 iPad 上无法使用。
<meta name="viewport" content="initial-scale=1.0,width=device-width,user-scalable=0, minimal-ui" />
[编辑3]
iOS/Safari 8 Beta 4:在此版本中,苹果已经删除了EDIT 2中提到的视口meta标签minimal-ui
。 来源-WebKit注释