【バグ解説】iOSでbodyのoverflow:hiddenが効かない原因と解決方法
bodyタグ
iOS
overflow:hidden
バグ
ある時、iOSで表示した時だけページが横スクロールしていることにきがつきました。
要素がはみ出しているから横スクロールを消すためのoverflow-x:hidden
が指定されているのみ正しく効いていませんでした。
そこで色々調べてみるうちにiOS特有の現象という事が分かってきました。
この記事ではiOSだけ、body
タグに指定したoverflow:hidden
が効かない理由と解決方法をご紹介したいと思います。
この記事の目次を表示
原因
iOSの場合、body
タグにoverflow:hidden
を指定しても効きません。
デフォルトで反映される値をいくつか調整してみましたが、どんな指定をしても効きませんでした。
詳しい原因は分かりませんが、iOSの場合はそういう仕様なんだと思います。
解決方法
解決方法はいくつかあります。
html
タグにoverflow:hidden
を指定します。
html {
overflow: hidden;
}
/* body {
overflow: hidden;
} */
もしくは
html,
body {
overflow: hidden;
}
これで正しくoverflow:hidden
の指定が反映されます。
body
タグ直下にコード全体を囲うタグを作り、そのタグにoverflow:hidden
を指定します。
<body>
<div class="all-wrap">
</div>
</body>
そして、CSSは以下のように指定します。
/* body {
overflow: hidden;
} */
.all-wrap {
overflow: hidden;
}
これで正しくoverflow:hidden
の指定が反映されます。
まとめ
いかがでしたか?
ブラウザによって、OSによって、もしくは機種によってはCSSが効かないということは時々あります。
この辺りはブラウザの仕様だからいつか統一され解消するかもしれないし、されないかもしれません。
2024年7月時点では、iOSではbody
タグに指定したoverflow:hidden
は効かないということを頭の片隅に入れておきましょう。