【JS不要!】CSSだけでスムーススクロールを実装する方法
Webサイト内でページ内遷移する際、スルスルっとスクロールアニメーションしながら移動するスムーススクロール。
昔からWebサイト制作している人からすると、JavaScriptやjQueryを使って実装するものと思っていのではないでしょうか。
実はこのスムーススクロール、現在はCSSだけで実装することが出来るようになってます。
そこでこの記事ではJavaScriptやjQueryを使わず、CSSだけでスムーススクロールを実装する方法をご紹介したいと思います。
昔ながらのjQueryを使いスムーススクロールを実装する方法はこちらの記事でご紹介しています。
CSSだけでスムーススクロールを実装する方法
早速ですが、CSSだけでスムーススクロールを実装するには以下の記述をします。
html{
scroll-behavior: smooth;
}
たったこれだけです。
これだけでスムーススクロールを実装することができます。
実装サンプルはこちら。
See the Pen Untitled by 寺井大樹 (@teraisan) on CodePen.
メリットとデメリット
ここからはCSSだけでスムーススクロールを実装する場合のメリットとデメリットをまとめてみました。
メリット
まずはメリットのご紹介です。
ブラウザの設定に影響されない
JavaScriptやjQueryでスムーススクロールを実装する場合、閲覧するブラウザでJavaScriptの設定が有効になっている必要がありました。
これは制作者側ではどうすることも出来ない設定なので、この設定が無効になっている環境ではスムーススクロールが機能しません。
その点、CSSだけで実装する場合は、この心配はありません。
2025年4月現在、主要ブラウザはこのプロパティをサポートしているので多くの環境でスムーススクロールを実装することが出来ます。
1行の記述で実装可能
なんと言ってもCSSの記述1行で実装可能です。
html{
scroll-behavior: smooth;
}
jQueryの場合だと最低でも2、3行のコードを書く必要があります。
また、プログラムなので動作の際、若干の負荷がかかります。
デメリット
続いてデメリットのご紹介です。
アドレスバーに#◯◯◯が付く
CSSでスムーススクロールバーを実装するとアドレスバーに#◯◯◯が付きます。
例えば、遷移先がid="company"
の場合、アドレスバーの部分が遷移の際、https://xxxx.com#companyとなります。
気にならないといえば気にならないですが、CSSで実装する場合の特徴ともいえます。
人によってはデメリットと捉える人もいるかもしれません。
スクロールスピードをコントロール出来ない
JavaScriptやjQueryで実装する場合、移動スピードを均一にしたり、秒数を長めや短めなど自在にコントロールすることが出来ますが、スクロールするスピードはブラウザに依存します。
そのため、CSSでスムーススクロールを実装する場合、この移動スピードをコントロールすることは出来ません。
古いブラウザには対応していない
scroll-behavior: smooth;
は比較的新しいCSSの記述です。
そのため古いブラウザでは対応していない可能性があります。
とはいえ、2025年4月現在は主要ブラウザはこのプロパティをサポートしているので基本的には使っても問題ないと思います。
まとめ
いかがでしたか?
HTMLやCSSはどんどん便利に進化していっています。
昔はJavaScriptやjQueryを使わないと出来なかったことがCSSで簡単に出来るようになっています。
今回ご紹介したスムーススクロールもその一つです。
ただし、新しい記述にはメリットとデメリットも存在しています。
それらを把握した上で、本当にその方法を採用するのか今まで通りの方法を採用するのか判断していきたいですね。
最後にもう一度、実装サンプルを掲載しておきます。ぜひご活用ください。