← Biblioteca componentes/navegacao/nav-fixa-vidro/ficha.md Abrir previewmarkupestiloscript
navegacao/nav-fixa-vidro

Menu fixo com fundo de vidro

🟢 estavel complexidade média prefixo nav- menu header fixo vidro scroll sublinhado

Menu fixo no topo, invisível enquanto a página está no início — só a marca, os links e o CTA flutuam sobre a foto do hero. Passados 30px de rolagem, entra um fundo de vidro escuro com blur e uma linha inferior. Os links ganham sublinhado que cresce da esquerda no hover.


Quando usar

Quando não usar


Padrão editorial

Slot Regra
Links 1 a 2 palavras cada, 4 a 6 itens. Substantivos, não verbos: "Soluções", não "Ver soluções".
CTA 3 a 5 palavras, ação concreta: "Fale com um especialista", "Agende seu diagnóstico". Nunca "Contato".
Marca SVG. Nunca texto estilizado — logo é vetor fornecido pelo cliente.

A ordem dos links espelha a ordem das seções na página. Link que não tem seção correspondente vira página nova, não item de menu.


Como usar

<link rel="stylesheet" href="componentes/navegacao/nav-fixa-vidro/estilo.css">
<script src="componentes/navegacao/nav-fixa-vidro/script.js"></script>

Cole como primeiro filho do <body>, antes do hero.

Ganchos

Gancho Papel
[data-nav] raiz — o script procura por ele
.nav.is-scrolled estado de vidro, aplicado pelo script
[data-drawer-open] no botão hambúrguer — quem escuta é o navegacao/drawer-fullscreen

Pareamento

O hambúrguer aqui não abre nada sozinho: ele só carrega [data-drawer-open]. Quem escuta é o script do drawer. Sem drawer na página o botão fica inerte e nada quebra no console. Se você usa este menu, quase sempre quer o navegacao/drawer-fullscreen junto.

Variações


Gotchas


Histórico

Projeto Onde Data Diferenças
Liberta Wealth index.html e quem-somos.html, topo 2026-08 Origem. .logo sem prefixo (colidia com o rodapé e o drawer), .scrolled em vez de .is-scrolled, id #nav, borda #222 crua, e o estado de scroll era calculado dentro do heroUpdate() do hero — páginas sem hero dependiam de um if (!hero) no meio da função.

Normalizações aplicadas na extração: prefixo em tudo (.logo.nav-logo); .scrolled.is-scrolled; id → [data-nav]; borda crua → --rule; #0a0a0a do CTA → --dark; border-radius:24px--radius-pill; escopo de tom explícito no elemento; desacoplado do hero — o script agora só assina LIB.onScroll e olha scrollY; o hambúrguer virou [data-drawer-open] em vez de id conhecido pelo script do drawer.