首頁 >web前端 >js教程 >如何使用 JavaScript 和 jQuery 實現錨連結的平滑滾動?

如何使用 JavaScript 和 jQuery 實現錨連結的平滑滾動?

Linda Hamilton
Linda Hamilton原創
2024-12-10 08:57:11297瀏覽

How Can I Implement Smooth Scrolling for Anchor Links Using JavaScript and jQuery?

為錨連結建立平滑捲動

平滑滾動可增強使用錨連結在頁面內導航時的使用者體驗。本文提供了兩種實現此效果的方法:與現代瀏覽器相容的本機方法和提供更廣泛支援的 jQuery 實作。

現代瀏覽器的本機方法:

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

        document.querySelector(this.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);
});

注意:

對於沒有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;
});

以上是如何使用 JavaScript 和 jQuery 實現錨連結的平滑滾動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn