cssのみでページ内リンクを滑らかにスクロール

例えば、目次と5つの項目に対する本文があるとする

HTMLの画面
<!-- 目次 -->
<ul>
  <li><a href="#menu1">A</a></li>
  <li><a href="#menu2">B</a></li>
  <li><a href="#menu3">C</a></li>
  <li><a href="#menu4">D</a></li>
  <li><a href="#menu5">E</a></li>
</ul>
<!-- 各項目 -->
<div id="menu1">Aについて</div>
<div id="menu2">Bについて</div>
<div id="menu3">Cについて</div>
<div id="menu4">Dについて</div>
<div id="menu5">Eについて</div>

これでページ内リンクを作成できた。ただこのままでは、目次をクリックした瞬間、各項目に瞬間的に移動してしまい、ページ内の項目間をどれくらい移動したのか分からなくなる恐れがある。

そこでページ内をスクロールしているように見せるため、HTML全体にスムーズスクロールを適用する

CSSの画面
html{
scroll-behavior: smooth;
}

これでページ内リンクを滑らかなスクロールをしながら移動できるようになる。

※html以外のタグ、divやclassをcssでscroll-behavior: smooth;を指定してみたが、瞬間的に移動した。

ページ内リンクを滑らかなスクロールさせたい際はhtmlタグが良さそうだ。

※筆者は、PCで検証してこの記事を投稿。しかしスマホで検証を行ったところ、なぜか瞬間的移動になってしまいました。スマホでもCSSのみで滑らかなスクロールができる方法を再仮定して実験中。

この記事が気に入ったらサポートをしてみませんか?