一部のブラウザーでは、メディア クエリの幅がビューポートの幅と同じではないというよく知られた問題があります (WebKit ブラウザーは、スクロールバーが表示されているときに CSS ビューポートのサイズを変更します)。body
垂直スクロールバーを最初のラッパーから、またはhtml
最初のラッパーに移動して問題を解決したかったdiv
(stackoverflow で説明されているように: https://stackoverflow.com/a/10091608/1647291 )。
修正
CSSでの修正は次のとおりです。
body, html { overflow: hidden; height: 100%; }
div.wrapper { overflow: auto; height: 100%; }
垂直スクロールバーを最初の内側から、body
またはhtml
最初のdiv
内側に移動しbody
ます。そのおかげで、メディア クエリでビューポートの幅を気にする必要はありません。
問題
しかし残念なことに、この優れた方法には 1 つの悪い副作用があります。iPad では (おそらく他のプラットフォームでも)、ページをスムーズにスクロールできません。画面に触れるのをやめると、すぐにスクロールが停止し、スムーズでゆっくりとしたイージングはありません。
CSS を使用したこの単純なソリューションは、javascript を使用してビューポートをテストするすべての方法よりもはるかに単純で優れています。それらのいくつかはここで説明されていますが、信頼性が低く、サイトの動作が非常に遅くなります:
- CSS メディア クエリと JavaScript ウィンドウの幅が一致しない
- http://github.com/tysonmatanich/viewportSize
- http://github.com/ryanve/verge
この CSS 修正を使用して、iPad を正しくスクロールさせる方法はありますか?