みかづきブログ・カスタム

基本的にはちょちょいのほいです。

jQueryを使ってページ内リンクのスクロールを実装する 🖱

最近めっきり使うことの少なった jQuery
しかし、稀にjQuery導入済みのサイトの改修を依頼されることもあるので、使う機会がゼロになったわけではありません。
久しぶりに使うと、animateがすごく便利で、ついつい多用したくなります。

animateを使えばページ内リンクをスクロールで移動する実装も楽々。

const duration = 800;
const $base = $('html, body');

$('a[href^="#"]').on('click', (evt) => {
  evt.preventDefault();

  setTimeout(() => {
    const href = evt.target.getAttribute('href');
    const $target = $(href);

    if (!$target.length) {
      return;
    }

    $base.stop().animate({
      scrollTop: $target.offset().top
    }, duration);
  }, 0);
});

こんな感じで書くことができます。

ページ内リンクのスクロールはwindow.scrolltoのbehaviorが使えるようになれば、御役御免なのでしょうが、対応状況をみるにまだまだしばらくはJavaScriptで実装する必要がありそうです。