【CSS】モーダルウインドウ実装時に後ろの要素がスクロールするのを防ぐ (スクロール連鎖防止)

デスクトップパソコン商用無料イラスト Web制作

position: fixedで配置した要素の後ろの要素がスクロールしてしまう

モーダルウインドウなどposition: fixedでスクロール可能な要素を固定して配置した場合、要素の下部の境界に到達するとブラウザは次にbody要素をスクロールし始めてしまいます。
これはスクロールチェーンと呼ばれるデフォルトの動作の影響です。

overscroll-behaviorでスクロール連鎖を防止

overflow: autoおよびoverflow: scrollが指定されたスクロール可能なコンテナーに対し、CSSプロパティ「overscroll-behavior」を指定することで制御可能です。
containまたはnoneを指定することで、スクロール連鎖を止める事ができます。

.modal {
  overscroll-behavior-y: contain; またはnone;
}

※overflow同様、y軸とx軸それぞれに指定することが可能です。

注意点

スクロールバーが発生しないスクロール不可能な要素だった場合は、overscroll-behaviorプロパティは無視されてしまいます。例えば、overflow: auto;を設定していた場合でも、中身の要素が小さく、スクロールバーが出ていない状態では反応しません。スクロールバーが出る状態になって初めて「overscroll-behavior」が反応します。

タイトルとURLをコピーしました