ホームページ >ウェブフロントエンド >jsチュートリアル >アンカー リンクのスムーズ スクロールを実装するにはどうすればよいですか?

アンカー リンクのスムーズ スクロールを実装するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-16 22:42:18931ブラウズ

How Can I Implement Smooth Scrolling for Anchor Links?

アンカー リンクによるスムーズなスクロールの実現

ヘルプ セクション内に FAQ へのハイパーリンクを組み込むことは、ユーザーを特定の情報に誘導する一般的なアプローチです。アンカー リンクを使用すると、目的の場所までページをスクロールできますが、スムーズなスクロール エクスペリエンスを実現することで、ユーザー インタラクションを強化できます。

ネイティブおよび jQuery ベースのソリューション

ブラウザの最新バージョンスムーズなアンカー スクロールのためのネイティブ ソリューションをサポートするようになりました。

document.querySelectorAll('a[href^="#"]').forEach(anchor => {
  anchor.addEventListener('click', e => {
    e.preventDefault();

    document.querySelector(anchor.getAttribute('href')).scrollIntoView({
      behavior: 'smooth'
    });
  });
});

ブラウザーの幅広い互換性のために、jQuery は代替手段を提供します。テクニック:

$(document).on('click', 'a[href^="#"]', function (event) {
  event.preventDefault();

  $('html, body').animate({
    scrollTop: $($.attr(this, 'href')).offset().top
  }, 500);
});

さらに、jQuery はターゲット要素に ID がない場合も処理します。

 $('a[href^="#"]').click(function () {
    $('html, body').animate({
        scrollTop: $('[name="' + $.attr(this, 'href').substr(1) + '"]').offset().top
    }, 500);

    return false;
});

パフォーマンスの最適化

$('html, body') セレクターをキャッシュすると大幅に改善される可能性がありますパフォーマンス。

var $root = $('html, body');

$('a[href^="#"]').click(function () {
    $root.animate({
        scrollTop: $( $.attr(this, 'href') ).offset().top
    }, 500);

    return false;
});

URL の更新

スクロール時に URL を更新する必要がある場合は、アニメーション コールバック内で実現できます。

var $root = $('html, body');

$('a[href^="#"]').click(function() {
    var href = $.attr(this, 'href');

    $root.animate({
        scrollTop: $(href).offset().top
    }, 500, function () {
        window.location.hash = href;
    });

    return false;
});

以上がアンカー リンクのスムーズ スクロールを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。