Heim >Web-Frontend >js-Tutorial >Wie kann ich reibungsloses Scrollen für Ankerlinks mithilfe von JavaScript und jQuery implementieren?

Wie kann ich reibungsloses Scrollen für Ankerlinks mithilfe von JavaScript und jQuery implementieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-10 08:57:11305Durchsuche

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

Erstellen eines reibungslosen Scrollens für Ankerlinks

Das reibungslose Scrollen verbessert die Benutzererfahrung, wenn Ankerlinks zum Navigieren innerhalb einer Seite verwendet werden. Dieser Artikel bietet zwei Ansätze, um diesen Effekt zu erzielen: eine native Methode, die mit modernen Browsern kompatibel ist, und eine jQuery-Implementierung für eine breitere Unterstützung.

Native Methode für moderne Browser:

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

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

jQuery-Methode für ältere Browser:

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

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

Hinweis:Für Elemente ohne ID sollte diese Variante verwendet werden:

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

    return false;
});

Leistungsoptimierung:

Um die Leistung zu verbessern, speichern Sie den $('html, body') zwischen. Selektor:

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

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

    return false;
});

URL aktualisieren:

Für Fälle, in denen die URL den aktuellen Abschnitt widerspiegeln soll, verwenden Sie diese Variante:

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

Das obige ist der detaillierte Inhalt vonWie kann ich reibungsloses Scrollen für Ankerlinks mithilfe von JavaScript und jQuery implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn