这似乎是 iOS MobileSafari 中类似 MSIE 的重大事故;事实上,它甚至比这更大,因为无论出于何种原因,它显然没有被 Chrome 实际拾取。
根据https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html:
由于 iOS 在不同屏幕分辨率的设备上运行,因此在引用设备尺寸时应使用常量而不是数值。使用device-width 作为设备的宽度,使用device-height 作为纵向的高度。
显然,该功能非常混乱,以至于他们自己甚至无法正确记录它!
LMFTFY:
使用device-width 作为设备的宽度,使用device-height 作为纵向的高度 宽度。
事实证明,这个宽度确实存在一个无 JavaScript 的解决方法,毕竟不是宽度:
您不需要设置每个视口属性。如果只设置了属性的子集,则 iOS 上的 Safari 会推断其他值。例如,如果您将比例设置为 1.0,Safari 会假定纵向宽度为 device-width,横向宽度为 device-height。因此,如果您希望宽度为 980 像素,初始比例为 1.0,则设置这两个属性。
LMFTFY:
您不需要设置每个视口属性。如果只设置了属性的子集,则 iOS 上的 Safari 会推断其他值。例如,如果您将比例设置为 1.0,Safari 会假定纵向宽度为 device-width,横向宽度为 device-height。因此,如果您希望宽度为 980 像素且初始比例为 1.0,则设置这两个属性。如果您练习响应式网页设计,那么您应该只设置 initial-scale为 1.0,不理会 width 属性。
例如,显然,如果需要 Safari 兼容性,设置 width=device-width 的常见建议是完全可笑的错误,而应将 viewport 属性设置为 initial-scale = 1.0。
这似乎在https://developers.google.com/web/fundamentals/design-and-ui/responsive/fundamentals/set-the-viewport?hl=en 得到了深深的承认(尽管他们的 tl;dr 总结仍然提供不正确的信息):
某些浏览器在旋转到横向模式时会保持页面的宽度不变,并缩放而不是重排以填满屏幕。添加属性 initial-scale=1 指示浏览器在 CSS 像素和与设备无关的像素之间建立 1:1 的关系,无论设备方向如何,并允许页面利用整个横向宽度。
总结:
-<meta name = 'viewport' content = 'width = device-width' />
+<meta name = 'viewport' content = 'initial-scale = 1' />