• 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でPNG画像に影を落とす方法【filterプロパティd……

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

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

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

CSSで写真にぼかし加工を加える方法【filterプロパティ……

2025年01月06日
CSSだけで写真をぼかせる? CSSのfilterプロパティのblur()関数を使うと、画像(要素)にぼかしを加えることができます。 画像編集ソフトを使うことな […]
サムネイル

CSSで写真の明るさ(明度)を調整する方法【filterプロ……

2025年01月06日
CSSだけで画像の明度を調整できる? CSSのfilterプロパティのbrightness()関数を使うと、画像(要素)の明るさを変更することができます。 画像 […]
サムネイル

CSSで写真のコントラストを変更する方法【filterプロパ……

2025年01月06日
CSSだけで写真のコントラストを調整できる? CSSのfilterプロパティのcontrast()関数を使うと、画像(要素)のコントラストを変更することができま […]
サムネイル

CSSで写真を白黒に変更する方法【filterプロパティgr……

2025年01月06日
CSSだけで写真を白黒にできる? CSSのfilterプロパティのgrayscale()関数を使うと、画像(要素)を白黒に変更することができます。 グレースケー […]
サムネイル

CSSで写真をセピアに加工する方法【filterプロパティs……

2025年01月06日
CSSで写真をセピアに加工できる? CSSのfilterプロパティのsepia()関数を使うと、画像をセピア色に変換できます。 画像編集ソフトを使うことなくCS […]