• HOME > 
  • CSS > 
  • CSSのみでスムーススクロールを実装する【scroll-be...

CSSのみでスムーススクロールを実装する【scroll-behavior】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像

本記事は執筆時点(2024年08月01日)の情報をベースにしております。掲載している情報が最新ではない可能性がありますので何卒ご容赦ください。

広告
広告

スムーススクロールはCSSだけで実装できる?

これまでスムーススクロールはJavaScriptで実装するものと思い込んでいたのですが、先日ふとしたきっかけで、CSSのみで実装できるプロパティがあることに気づいたので備忘録として残しておきます。

スムーススクロールとは?

はじめにスムーススクロールについてまとめておくと、スムーススクロールはページ内リンクをクリックした際、リンク先の場所まで自動でスクロールしながら滑らか(スムース)に移動する機能です。

下の例を見比べてもらうとわかると思いますが、

通常のページ内リンクは下図のように一瞬でリンク先の位置まで移動するのに対し、

通常のページ内リンクの例

スムーススクロールはリンク先まで自動的でスクロールしながら移動します。

スムーススクロールの例

どちらが良いかは好みが分かれるところだと思いますが、個人的にはアニメーション風の動きがあるサイトの方がリッチな印象を与える効果が期待できると感じています。

スムーススクロールを実装するための2つの方法

Webページにスムーススクロールを実装する方法は大きく分けて以下の2つです。

  • JavaScriptで独自に設定する
  • CSSのscroll-behaviorプロパティを使う

この記事ではタイトルの通り、2つ目のCSSのscroll-behaviorプロパティを使った方法をご紹介します。

scroll-behaviorは現時点でChromeやEdge・Safariなど主要ブラウザは一通り対応しているようなので気兼ねなく導入できそうです。

scroll-behaviorの使い方

scroll-behaviorは、スムーススクロールを実装するために用意されたプロパティで、「auto」「smooth」という2つの値によって設定を行います。

「auto」が初期値、「smooth」を設定するとスムーススクロールが有効になります。

scroll-behaviorの書き方

スムーススクロールを実装するために重要なポイントは「htmlタグ」に対してプロパティを設定するという点です。

bodyタグなどその他の要素にscroll-behaviorを指定してもスムーススクロールにはなりません。

CSS

html{
    scroll-behavior:smooth;
}

これだけでスムーススクロールの実装が完了します。

ページ内のすべてページ内リンクがスムーススクロールで移動するようになります。

非常に簡単で便利なscroll-behaviorですが、以下のような注意点もあります。

scroll-behaviorはカスタマイズが効かない

JavaScriptで独自に実装するスムーススクロールと異なり、CSSのscroll-behaviorはページ全体に適用されるので、特定の要素のみスムーススクロールさせるといったカスタマイズはできません。

ページごとにスムーススクロールにするか切り替えたい場合はCSSの読み込ませ方を工夫するか、JSで独自に実装した方が良いでしょう。

まとめ

以上が、scroll-behaviorプロパティを使ってCSSのみでスムーススクロールを実装する方法です。

わずかなコードでスムーススクロールを有効にできるので私同様ご存じなかった方はぜひ試してみてください。

広告
広告

関連する記事

サムネイル

CSSのbackground-clipによるテキスト装飾【切……

2025年03月06日
background-clipプロパティを活用して文字の形に画像を切り抜いたり、文字にグラデーションを掛ける方法について備忘録としてまとめます。 backgro […]
サムネイル

CSS内で独自の変数を定義・参照する方法【カスタムプロパティ……

2025年02月06日
今更ながらCSSで変数を使えることを知ったので、今回はカスタムプロパティの使い方について備忘録としてまとめてみます。 CSSのカスタムプロパティとは? CSSの […]
サムネイル

CSSのcounter関数でカウントを行って連番を表示する

2025年02月06日
最近になって、contentプロパティのcounter関数を使えばCSSだけで要素をカウントして連番を表示できることを知りました。本記事ではcounter関数の […]
サムネイル

CSSのattr関数でHTMLの属性値を取得・表示する【ツー……

2025年02月06日
最近になって疑似要素で使うことができるCSSのattr関数の存在を知りました。コーディングの幅を広げる便利な関数だと感じましたので学んだ内容を備忘録としてまとめ […]
サムネイル

CSSのoutlineプロパティの使い方【borderとの違……

2025年02月06日
CSSのoutlineプロパティについて学び直す機会がありましたので、borderとの使い分けを含めて備忘録としてまとめます。 outlineプロパティとは? […]
サムネイル

CSSでPNG画像に影を落とす方法【filterプロパティd……

2025年01月15日
CSSでドロップシャドウをつけるには? CSSで要素に影(ドロップシャドウ)を付ける手段としては「box-shadow」や「text-shadow(テキストの場 […]
サムネイル

CSSのfilterプロパティの関数の種類と効果をまとめ【フ……

2025年01月06日
最終更新日:2025年01月15日
IEのサポートが終了したので、これまで使う機会の少なかったfilterプロパティを改めて調べたところ、CSSでの表現の幅を広げてくれる画期的なプロパティだと気づ […]