"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo lograr un desplazamiento fluido con enlaces de anclaje?

¿Cómo puedo lograr un desplazamiento fluido con enlaces de anclaje?

Publicado el 2024-12-21
Navegar:148

How Can I Achieve Smooth Scrolling with Anchor Links?

Desplazamiento suave al hacer clic en un enlace ancla

Al navegar por una página web con enlaces ancla, los usuarios esperan una transición perfecta a la sección de destino. Sin embargo, el comportamiento de desplazamiento predeterminado puede ser abrupto. Este artículo explora técnicas para lograr un desplazamiento fluido al hacer clic en enlaces ancla.

Soporte nativo

Navegadores como Chrome y Firefox han introducido soporte nativo para un desplazamiento fluido. Esto se implementa utilizando la propiedad "comportamiento" con el valor "suave" al desplazarse hacia la vista:

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

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

Complemento jQuery

Para navegadores más antiguos, un complemento jQuery puede suavizar la animación de desplazamiento. Esta técnica utiliza el método "animar" para mover la página a la sección de destino:

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

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

Técnica mejorada

Si el elemento de destino carece de ID, se puede utilizar el siguiente complemento jQuery modificado:

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

    return false;
});

Optimización del rendimiento

Almacenar en caché el selector "$('html, body')" dentro de una variable mejora el rendimiento:

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

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

    return false;
});

Preservar el hash de URL

Para actualizar el hash de URL al desplazarse suavemente, utilice la devolución de llamada "animada":

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

Al implementar una de estas técnicas, puede proporcionar una experiencia de desplazamiento pulida y fácil de usar al navegar por su página utilizando enlaces ancla.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3