iOS Safariでfixedした要素のスクロールが出来ない場合の対処法

ある要素を絶対位置指定で固定表示をすることを可能にするposition:fixed;
というプロパティがあります。
ページ上に一枚レイヤーを重ねるような形で、メニューやモーダルなどのコンテンツを全画面表示させる場合などに用いられますが、その際にある条件を満たすと、iOSのSafariで絶対位置で指定した要素内をスクロール出来ない事象が発生してしまいます。
実案件でこの事象に遭遇したので、備忘録を兼ねて共有します。
発生する条件
具体的には以下の条件を満たすと、スクロールが出来なくなってしまうようです。
発生環境
iOS9 Safari(他バージョンは未確認)
発生条件
position
プロパティにabsolute
かfixed
を指定しているheight
プロパティとoverflow
プロパティを指定している-webkit-overflow-scrolling
プロパティにtouch
を指定している
対処法
対処法としてposition
プロパティを指定する要素と、height
・overflow
プロパティをしている要素を別々にすることでスクロールが可能となります。
以下に実装例をご紹介します。
See the Pen dXwLGg by Glatch (@glatch) on CodePen.
今回の場合、.header__navi
にposition: fixed
を指定し、.header__navi__inner
にheight
とoverflow
を指定しています。
div
要素を余計に一つ挟まなくてはならないのがデメリットですが、こうすることで絶対指定した要素もスクロールさせることが可能です。
私たちGlatchはコーポレートサイト制作を得意とするWeb制作事務所です。
お気軽にご相談・お問い合わせください。