post

Efeito Rolagem Suave ao Clicar em Botão com JavaScript (Smooth Scroll JS)

Publicado em: 28/06/2023 / Atualizado em: 29/02/2024

Categorias: BlogJavaScript (JS)JS

Para fazer um efeito de rolagem suave ao clicar em botão, é possível usar o javascript, com apenas um código curto e simples.

Para isso, adicione este código JS abaixo em sua página:

document.querySelectorAll('.ancor').forEach(anchor => {
    anchor.addEventListener('click', function (e) {
        e.preventDefault();

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

Depois, apenas precisa colocar a class .ancor em seus botões, como exemplo abaixo:

<a href="#equipe" class="ancor">Veja nossa equipe</a>
<a href="#empresa" class="ancor">Veja nossa empresa</a>
<a href="#contato" class="ancor">Entre em contato</a>


<div class="ancor" id="equipe">
  Aqui está nossa equipe
</div>

<div class="ancor" id="empresa">
  Aqui está nossa empresa
</div>

<div class="ancor" id="contato">
  Aqui está o formulário de contato
</div>

Atualização: 29/02/2024

Caso sua página use a mesma CLASS para todos os botões, mas nem todos são ancoras, sendo que alguns são links externos ou para outras páginas, irá precisar especificar o ID da seção. Você pode fazer desse jeito:

document.querySelectorAll('.button').forEach(anchor => {
    anchor.addEventListener('click', function (e) {
      
        if (this.getAttribute('href') === '#secao-contato') {
            e.preventDefault();
            document.querySelector(this.getAttribute('href')).scrollIntoView({
                behavior: 'smooth'
            });
        }
      
    });
});

Neste código acima, estou especificando que, quando clicar na CLASS .button, verifique primeiro se o link desse botão, faz referencia a seção de ID #secao-contato

Se fizer referencia, então execute o código, se não, não faça nada e deixe o botão seguir seu funcionamento normalmente.

Isso evita problemas na sua página, como por exemplo, se tiver todos os botões com a mesma CLASS, incluindo botões de formulários, o botão de formulário não vai enviar a mensagem, visto que o código usa a função e.preventDefault() para evitar o padrão do botão.

Publicações recomendadas:


Inscreva-se em Nossa News:

Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Bruno Devs News


Link Curto para Compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/2944

ID de Referência: 2944

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato