受け入れられた回答に関するVictorSのコメントは、それが実際に機能する非常にエレガントなソリューションであるため、独自の回答であるに値します。そして、その有用性に少し追加します。
ビクターはposition:fixed
作品を追加することに注意します。
body.modal-open {
overflow: hidden;
position: fixed;
}
そして確かにそうです。ただし、基本的に上部にスクロールするというわずかな副作用もあります。position:absolute
これを解決しますが、モバイルでスクロールする機能を再導入します。
ビューポート(ビューポートをに追加するための私のプラグイン)<body>
がわかっている場合は、のcssトグルを追加するだけposition
です。
body.modal-open {
// block scroll for mobile;
// causes underlying page to jump to top;
// prevents scrolling on all screens
overflow: hidden;
position: fixed;
}
body.viewport-lg {
// block scroll for desktop;
// will not jump to top;
// will not prevent scroll on mobile
position: absolute;
}
また、これを追加して、モーダルを表示/非表示にするときに、基になるページが左/右にジャンプしないようにします。
body {
// STOP MOVING AROUND!
overflow-x: hidden;
overflow-y: scroll !important;
}