Maison > interface Web > js tutoriel > Comment puis-je implémenter un défilement fluide pour les liens d'ancrage à l'aide de JavaScript et jQuery ?

Comment puis-je implémenter un défilement fluide pour les liens d'ancrage à l'aide de JavaScript et jQuery ?

Linda Hamilton
Libérer: 2024-12-10 08:57:11
original
305 Les gens l'ont consulté

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

Création d'un défilement fluide pour les liens d'ancrage

Le défilement fluide améliore l'expérience utilisateur lors de l'utilisation de liens d'ancrage pour naviguer dans une page. Cet article propose deux approches pour obtenir cet effet : une méthode native compatible avec les navigateurs modernes et une implémentation jQuery pour une prise en charge plus large.

Méthode native pour les navigateurs modernes :

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

        document.querySelector(this.getAttribute('href')).scrollIntoView({
            behavior: 'smooth'
        });
    });
});
Copier après la connexion

Méthode jQuery pour les plus âgés Navigateurs :

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

    $('html, body').animate({
        scrollTop: $($.attr(this, 'href')).offset().top
    }, 500);
});
Copier après la connexion

Remarque : Pour les éléments sans identifiant, cette variante doit être utilisée :

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

    return false;
});
Copier après la connexion

Optimisation des performances :

Pour améliorer les performances, mettez en cache le $('html, body') sélecteur :

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

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

    return false;
});
Copier après la connexion

Mise à jour de l'URL :

Dans les cas où vous souhaitez que l'URL reflète la section actuelle, utilisez cette 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;
});
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal