お問い合わせ・無料相談
WEBのこと 2023.07.06

【JSなしで簡単実装】CSSだけでスムーススクロールをしよう!

WRITER
Hirabayashi Kazuaki コーダー
Hirabayashi Kazuaki

コーダー。WordPressでのオリジナルテーマ作成・カスタマイズが得意。

【JSなしで簡単実装】CSSだけでスムーススクロールをしよう!

こんにちは、かずです。

なんでもかんでもCSSで実装したがりコーダーです(?)
でも本当に近年CSSで出来ることが増えすぎて、思いついたらすぐCSSで出来ないか調べる癖がついてしまいました。

ということで最近やっとこ使うようになったCSSのご紹介。

scroll-behavior

こちらなんと、アンカーリンクでよく使うスムーススクロールをJavaScript等を使わずとも実装できてしまうんです!
使い方も簡単、こうしてこうです。

body {
  scroll-behavior: smooth;
}

body要素に一行記述するだけでもう完成です!
ただこのままだとちょっとあれなのでもうひと手間。

scroll-padding-top

こちらは、ページ内リンクで移動した際に、通常は移動先にぴったりくっついてしまいますが、このプロパティでスクロール位置を上方向に調整出来ます!
実際の余白でなくスクロールに対する余白というのがポイント!
言葉で表現するの難しいですねこれ・・・

という訳で scroll-padding-top も含めた記述がこちら。
こうしてこうしてこうです。

:root{
  --header-height: 100px;
  @media screen and (max-width: 767px){
    --header-height: 60px;
  }
}
body {
  scroll-behavior: smooth;
  scroll-padding-top: var(--header-height);
}

カスタムプロパティでヘッダーの高さ分の数値を入れてあげて、その分だけスクロール先の上部に余白をつけてスムーススクロール!

もちろんモダンブラウザにも対応しているので自由に使いたい放題です!

カスタムプロパティ
scroll-behavior
scroll-padding-top

デメリットとしては、
・ヘッダーの高さがリアルタイムで取得出来ない
・スクロールスピードが指定出来ない
・urlにハッシュタグが付く(好みにもよりますが・・・)

といったくらいでしょうか。
JavaScript等と違ってカスタマイズが出来ないので、動きや速さなどをいじりたい場合は従来の方法でやりましょう!

それでは。

JOURNALが気に入ったら「いいね」してね!

Contact

ブランディング・WEB制作・運用まで、まずは一度お話を聞かせてください。 初回のご相談は無料で承っています。

お電話

0120-622835

10:00〜18:00 / 土日祝休

メールフォーム

お問い合わせはこちら