「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > アンカー リンクを使用してスムーズなスクロールを実現するにはどうすればよいですか?

アンカー リンクを使用してスムーズなスクロールを実現するにはどうすればよいですか?

2024 年 12 月 21 日に公開
ブラウズ:283

How Can I Achieve Smooth Scrolling with Anchor Links?

アンカー リンクをクリックしたときのスムーズなスクロール

アンカー リンクのある Web ページをナビゲートするとき、ユーザーはターゲット セクションへのシームレスな遷移を期待します。ただし、デフォルトのスクロール動作は突然になる場合があります。この記事では、アンカー リンクをクリックしたときにスムーズなスクロールを実現するテクニックについて説明します。

ネイティブ サポート

Chrome や Firefox などのブラウザでは、スムーズ スクロールのネイティブ サポートが導入されています。これは、ビューにスクロールするときに値「smooth」を持つ「behavior」プロパティを使用して実装されます:

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

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

jQuery プラグイン

古いブラウザの場合、jQuery プラグインを使用するとスクロール アニメーションをスムーズにできます。この手法では、「animate」メソッドを使用してページをターゲット セクションに移動します:

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

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

拡張テクニック

ターゲット要素に ID がない場合は、次の修正された jQuery プラグインを使用できます:

$('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 ハッシュを更新するには、「animate」コールバックを使用します:

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;
});

これらの手法のいずれかを実装すると、アンカー リンクを使用してページを移動するときに、洗練されたユーザー フレンドリーなスクロール エクスペリエンスを提供できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3