[CSS] scroll-behavior: smooth; が有効にならない時の対処法

2 min read

CSS だけでスムーズスクロールが実現できるというscroll-behavior: smooth;が Firefox 36 で正式サポートされたので色々と動作を確認していた。色々と試してみるとスムーズスクロールが効かないパターンがあったので確認すべきところをメモしておく。

実装方法

scroll-behaviorは以下のように指定する。(autoが初期値)

```css body { scroll-behavior: smooth; } ```

上記のscroll-behavior を指定した上で、従来通りアンカーを書くだけでJavaScriptなどを使わずスムーズスクロールすることができる。

<a href="#scroll-position">scroll-position</a>

<h2>scroll-position</h2>

スムーズスクロールが動作しない場合

CSSを確認する

bodyに以下のような指定のいずれかがされている場合、スムーズスクロールが動作しない。

overflow: hidden;
overflow-x: hidden;
overflow-y: hidden;

Next Read

CSS in JSとは何か

想定読者 / そもそも JS フレームワーク(React、Vue.js)を採用する理由とは何か / 「命令的 UI」 と 「宣言的 UI」 / 「命令的 UI」 VS 「宣言的 UI」 / CSS in JS とは / CSS in JS ライブラリ / Emotion の使い方 / 利用するメリット / 利用するデメリット / 関連 / <h2 id="footnote-label" class="sr-only">Footnotes

[CSS] カスケードレイヤー(@layer)とITCSSの概念を組み合わせた設計を考える

カスケードレイヤーとは / ITCSS のレイヤー / ITCSS のレイヤーをカスケードレイヤーに落とし込む / 参考

[CSS in JS] 外部のリセットCSSを使う方法

目的 / 課題 / おまけ

CSSのborder-radiusではiOSのアイコンの角丸は表現できない

ウェブフロントエンドの CSS で再現する方法 / 参考