Maison > interface Web > js tutoriel > Comment puis-je implémenter un défilement fluide pour les liens d'ancrage ?

Comment puis-je implémenter un défilement fluide pour les liens d'ancrage ?

Mary-Kate Olsen
Libérer: 2024-12-16 22:42:18
original
1024 Les gens l'ont consulté

How Can I Implement Smooth Scrolling for Anchor Links?

Obtenir un défilement fluide avec des liens d'ancrage

L'intégration d'hyperliens vers des FAQ dans une section d'aide est une approche courante pour guider les utilisateurs vers des informations spécifiques. Bien que les liens d'ancrage permettent le défilement des pages vers l'emplacement cible, obtenir une expérience de défilement fluide peut améliorer l'interaction de l'utilisateur.

Solutions natives et basées sur jQuery

Les dernières versions des navigateurs prend désormais en charge une solution native pour un défilement fluide des ancres.

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

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

Pour une compatibilité plus large avec les navigateurs, jQuery propose une alternative technique :

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

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

De plus, jQuery gère les cas où l'élément cible n'a pas d'ID.

 $('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

La mise en cache du sélecteur $('html, body') peut considérablement améliorer performances.

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

Si la mise à jour de l'URL lors du défilement est souhaitée, elle peut être réalisée dans le rappel de l'animation.

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