• 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の疑似クラスnth-childとnth-of-type……

2024年11月07日
疑似クラスnth-childとnth-of-typeについて CSSの疑似クラス「:nth-child」と「:nth-of-type」はどちらも何番目の要素とい […]
サムネイル

CSSのinline-flexの使いどころ【flexによる横……

2024年05月29日
inline-flexはCSSのdisplayプロパティの値の一つで、横並びレイアウトを作ることができる「flex」にインライン効果を持たせた性質があります。
サムネイル

CSSのセレクターで前方一致や部分一致を使って指定する方法

2024年05月16日
CSSでは属性の値を前方一致や部分一致でセレクターに指定できます。IDやクラス以外のhrefといった属性値であれば指定できるので、例えばリンク先ごとに処理を変えることも可能です。
サムネイル

CSSでテーブルの先頭行や先頭列を固定する方法【sticky……

2024年04月12日
CSSのpositionプロパティの「sticky」を使えば、CSSだけでテーブルの行も列も簡単に固定することができるのでご紹介します。情報量の多い表を作る場合は、スクロールした時に項目名などの行や列は固定させておいたほうが見やすくなります。
サムネイル

CSSのwhite-spaceプロパティの使い方【半角スペー……

2024年03月07日
SSのwhite-spaceは、テキストにおける半角スペース・改行・タブの扱いと折り返しの有無を設定するプロパティです。
サムネイル

CSSのメディアクエリでスマホでのホバーの挙動の対策を行う【……

2023年10月01日
最終更新日:2023年09月28日
要素をタップしたときにホバー時のスタイルが適用され続けるという経験はありませんか?CSSだけで簡単にスマホでの疑似要素「hover」の挙動の対策を行う方法をご紹介します。