"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso obter uma rolagem suave com links âncora?

Como posso obter uma rolagem suave com links âncora?

Publicado em 2024-12-21
Navegar:339

How Can I Achieve Smooth Scrolling with Anchor Links?

Rolagem suave ao clicar em um link âncora

Ao navegar em uma página da web com links âncora, os usuários esperam uma transição perfeita para a seção de destino. No entanto, o comportamento de rolagem padrão pode ser abrupto. Este artigo explora técnicas para obter uma rolagem suave ao clicar em links âncora.

Suporte nativo

Navegadores como o Chrome e o Firefox introduziram suporte nativo para rolagem suave. Isso é implementado usando a propriedade "behavior" com o valor "smooth" ao rolar para a visualização:

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

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

jQuery Plugin

Para navegadores mais antigos, um plugin jQuery pode suavizar a animação de rolagem. Esta técnica usa o método "animate" para mover a página para a seção de destino:

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

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

Técnica aprimorada

Se o elemento de destino não tiver um ID, o seguinte plugin jQuery modificado pode ser usado:

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

    return false;
});

Otimização de desempenho

Armazenar em cache o seletor "$('html, body')" dentro de uma variável melhora o desempenho:

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

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

    return false;
});

Preservando o hash do URL

Para atualizar o hash do URL durante a rolagem suave, use o retorno de chamada "animate":

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

Ao implementar uma dessas técnicas, você pode fornecer uma experiência de rolagem refinada e fácil de usar ao navegar em sua página usando links âncora.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3