Como alterar menu header após scroll com Javascript

Como alterar menu header após scroll com Javascript

Tags
Javascript
Front-end
Published
February 22, 2023
Author
Matheus Costa
Veja neste artigo como alterar o menu/cabeçalho/header do site após scroll na página com Vanilla Javascript (Pure JS), sem utilizar o framework jQuery.

Configurando o HTML

  • Primeiramente vamos chamar em nosso HTML o arquivo Javascript que irá conter a função para alterar o header.
  • Neste exemplo, o arquivo de scripts está na pasta js/scripts
  • Insira o comando abaixo antes do fechamento da tag </body>
<script src="js/scripts.js"></script>

Adicionando função no Javascript

  • Agora insira o comando abaixo no arquivo de scripts
  • Lembrando que é necessário alterar o seletor: querySelector(".header") para que ele capture o seu elemento HTML, seja uma classe ou um ID.
  • Exemplo: document.querySelector("NOME-DA-SUA-CLASSE-OU-ID")
// Função Alterar Header Apos Scroll function alterarHeaderAposScroll() { const header = document.querySelector(".header"); // captura o header const navHeight = header.offsetHeight; if (window.scrollY >= navHeight) { // se o scroll for maior que a altura do header adiciona a classe ativo header.classList.add("ativo"); } else { header.classList.remove("ativo"); // remove a classe } } // Chamada das funções pelo scroll window.addEventListener("scroll", function () { alterarHeaderAposScroll(); });

Personalizando a classe no CSS

  • Agora é só adicionar a classe .ativo no arquivo .CSS do seu menu e fazer as personalizações desejadas.
  • Toda vez que o scroll na página for maior que a altura do header a classe será adicionada
.header { position: fixed; z-index: 10; width: 100%; height: 12.5rem; background: transparent; display: flex; align-items: center; transition: all 0.3s; } // Habilita classe .ativo após o scroll .header.ativo { background: $white; height: 8rem; box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.05); }
  • No exemplo acima, eu adiciono uma cor de fundo (branco), diminuo a altura do cabeçalho e adiciono também uma sombra.
  • Todas essas mudança só são aplicadas após o scroll na página.
  • E se voltar ao topo, a classe é removida e os estilos também.

Inspecionando elemento

  • Para validar o funcionamento da função, inspecione a página (F12) e verifique se seu menu está recebendo a classe .ativo quando o scroll é feito na página.
Gostou da dica? Sabia dela ou já usou em algum projeto? Tem alguma dica para acrescentar? Comenta aí o que achou. Valeeu!