CSSで1行で簡単にスムーススクロールを実装できる「scroll-behavior」プロパティ

ページ内リンクをクリックしたときに、ページがキレイにスクロールしながら移動するいわゆる「スムーススクロール(スムーズスクロールと言う人もいますが、英語だとSmooth Scrollなので、この記事ではスムーススクロールに統一します)」。
ひと昔前だとjQueryを活用したり、window.scrollを使ったりが必要でしたが、CSSでも実現ができます。
scroll-behavior
scroll-behavior: smooth;を指定してあげると、ページ内リンクをクリックしたときにスムーススクロールになります。
1行追加するだけなので非常にラクですね。
html {
scroll-behavior: smooth;
}実際のサンプルは下記になります。
See the Pen scroll-behavior: smooth; by Masakazu Saito (@31mskz10) on CodePen.
ちゃんとページ内リンクをクリックするとスムーススクロールになっています。
JavaScriptは一切使用していないのが分かると思います。
対応ブラウザ
いままで何行もJavaScriptを書く必要があったのを考えると、1行で実装が済んでしまうscroll-behaviorは非常に便利なのですが、対応ブラウザがまだ微妙です。
IE11は切ってしまってもいい気がしますが、Safariに対応していません。
その他の問題
1行でスムーススクロールの設定ができてしまうので、細かい調整ができないのは問題でもあります。
- ページ上部に固定ヘッダーなどがあって、遷移先の数ピクセル上までスクロールなどの細かい調整ができない
- 全てのページ内リンクがスムーススクロールになってしまう
- アニメーションスピードの設定はできない
細かく設定したい場合は、いままで通りJavaScriptを使う必要がありそうです。




効率的にHTMLを生成できるPugの特徴や記述方法
Vue CLIでVue.jsの開発環境をセットアップするまでの流れ
ブラウザでこれ以上スクロールできない場合の挙動を制御する「overscroll-behavior」プロパティ
サイトを運営する時必ず登録しておきたいGoogle Search Console(サーチコンソール)の登録方法
Visual Studio Codeで読み込んだCSSで設定されているclass名の入力補完をしてくれる拡張機能「HTML CSS Support」
Webデザイナーを目指す専門学生が技術ブログを書くメリット
Visual Studio Codeで複数ファイルを編集するときにタブやペインの操作方法
CSSで::placeholderにスタイルを設定する方法
ウェブサイトをダークモードに対応するときに気をつけること
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
JavaScriptで配列内から特定条件の要素を探す方法
gulp-plumberとgulp-notifyでgulpエラー時にデスクトップで通知がくるようにする
Path Finder 8の「パスのコピー」の種類とその違いについて
CSS Nite in Kobe, vol.54「XDで作ったワイヤーフレームを元に制作するウェブビジュアルデザインと精度の高いプロトタイプをコーダーに渡すときのポイントのセミハンズオン」に参加してきました
CSS Nite in Kobe, vol.56「プラグマティックペルソナとマイクロカスタマージャーニーを作ってみよう」に参加してきました
Fantastical 2 for Macでスムーズにカレンダーの登録を行う
iTerm2の見た目を設定できる環境設定の「Appearance」タブ
メニューアイコンにあるアプリの強制終了方法(アクティビティモニタ)
Macの高機能diffツール「Kaleidoscope」
液体が垂れているような図形「流体シェイプ」の作り方