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!