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
Freigeben: 2024-12-10 08:57:11
Original
356 Leute haben es durchsucht

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'
        });
    });
});
Nach dem Login kopieren

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);
});
Nach dem Login kopieren

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;
});
Nach dem Login kopieren

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;
});
Nach dem Login kopieren

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;
});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage