Header fixo: CSS position: sticky e ocultar ao rolar

Guia de header fixo

Header fixo em CSS: position sticky, encolher e ocultar ao rolar | We.Inc

Crie um header fixo com position: sticky e depois adicione os modos encolher e ocultar ao rolar. Demo ao vivo, deslocamento de âncoras com scroll-margin, correções de z-index e um pequeno hook React.

Dê ao header position: sticky e top: 0, além de um fundo e um z-index, e ele fica preso no topo enquanto a página rola. Ele só gruda dentro do elemento pai, e um ancestral com overflow definido pode impedir isso. Para um header que some ao rolar, alterne uma classe com translateY a partir de um listener de scroll.

sticky vs fixed para headers

Headers fixos são uma linha de CSS até deixarem de ser: o header se recusa a grudar, os links de âncora param embaixo dele ou um menu suspenso desliza para trás do conteúdo. Esta página mostra essa linha de CSS e depois cada uma dessas falhas, com uma demo de rolagem ao vivo em que você alterna entre os modos simples, encolher e ocultar.

Perguntas frequentes

Por que o meu position: sticky não funciona?

Três causas comuns: nenhum valor de inset como top: 0, um elemento pai que termina logo depois do header, sem espaço para grudar, ou um ancestral com overflow diferente de visible, que vira a caixa em que o header gruda. Verifique nessa ordem.

O header deve ser sticky ou fixed?

O sticky é mais simples porque mantém o seu lugar no layout, então nada pula para baixo dele no topo da página. O fixed é útil quando o header precisa ficar sobre um hero de tela cheia, mas aí você mesmo adiciona o padding à página.

Como evitar que os links de âncora fiquem escondidos sob um header fixo?

Adicione scroll-padding-top ao container de rolagem, normalmente o html, com valor igual à altura do header. Para alvos pontuais, você pode colocar scroll-margin-top no próprio título.

Por que o meu menu suspenso aparece atrás do conteúdo da página?

O posicionamento sticky cria um contexto de empilhamento, então tudo o que está dentro do header só consegue se empilhar dentro dele. Suba o próprio header com um z-index acima do conteúdo que vem depois, por exemplo z-index: 50, em vez de subir o menu suspenso.

Como o sticky funciona de verdade

Ocultar ao rolar para baixo, mostrar ao rolar para cima

Encolher sem pulos no layout

O header fixo básico

Header fixo dentro de uma página com rolagem

Role o quadro. O header fica no topo e o link de âncora para abaixo dele graças ao scroll-padding-top.

Ocultar ao rolar para baixo, mostrar ao rolar para cima

CSS para os estados oculto e encolhido

O script só define atributos data. Toda mudança visual fica no CSS.

Hook React: useHideOnScroll

Retorna dois booleanos que você pode espalhar no header como atributos data. O limite de 8px ignora pequenas tremidas.

Armadilhas do header fixo

Sintomas e correções

Sticky simples

Encolher

Ocultar ao rolar

Demo de rolagem ao vivo

Alterne entre simples, encolher e ocultar ao rolar, e depois role dentro da caixa.

Modo do header

Página de demo com rolagem

Marca

Role para baixo e depois volte um pouco para cima.

Estado do header: visível

Estado do header: visível, rolado

Estado do header: oculto

Estado do header: oculto, rolado

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site