これは、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 にする場合は、これらのプロパティを両方とも設定します。レスポンシブ Web デザインを実践している場合は、initial-scale
を 1.0 にのみ設定し、幅プロパティをそのままにしておく必要があります。
たとえば、どうやら、width=device-width
Safari との互換性が必要な場合、設定に関する一般的なアドバイスはまったくばかげて間違っており、代わりにビューポート プロパティを に設定する必要があります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' />