Header sticky: position: sticky in CSS e scomparsa allo scroll

Guida all'header sticky

Header sticky in CSS: position sticky, riduzione, scomparsa allo scroll | We.Inc

Crea un header sticky con position: sticky, poi aggiungi la riduzione e la scomparsa allo scroll. Demo dal vivo, offset delle ancore con scroll-margin, correzioni di z-index e un piccolo hook React.

Assegna all'header position: sticky e top: 0, più uno sfondo e uno z-index, e resterà fisso mentre la pagina scorre. Resta attaccato solo dentro il suo elemento padre, e un antenato con overflow impostato può bloccarlo. Per un header che si nasconde allo scroll, attiva e disattiva una classe con translateY da un listener di scroll.

sticky e fixed a confronto per gli header

Gli header sticky sono una riga di CSS, finché qualcosa non va storto: l'header non resta attaccato, i link alle ancore finiscono sotto di esso o un menu a tendina scivola dietro il contenuto. Questa pagina spiega la riga di CSS e poi ciascuno di questi problemi, con una demo di scroll dal vivo in cui puoi passare tra le modalità semplice, riduzione e scomparsa.

Domande frequenti

Perché il mio position: sticky non funziona?

Tre cause tipiche: nessun valore di inset come top: 0, un padre che finisce subito dopo l'header e quindi non lascia spazio per restare attaccato, oppure un antenato con overflow diverso da visible, che diventa il riquadro a cui l'header si attacca. Controllale in quest'ordine.

Un header deve essere sticky o fixed?

Sticky è più semplice perché mantiene il suo posto nel layout, così niente salta sotto di esso in cima alla pagina. Fixed è utile quando l'header deve stare sopra una hero a schermo intero, ma in quel caso il padding alla pagina lo aggiungi tu.

Come evito che i link alle ancore finiscano sotto un header sticky?

Aggiungi scroll-padding-top al contenitore che scorre, di solito html, pari all'altezza dell'header. Per singole destinazioni puoi invece mettere scroll-margin-top direttamente sul titolo.

Perché il mio menu a tendina appare dietro il contenuto della pagina?

Il posizionamento sticky crea uno stacking context, quindi tutto ciò che sta dentro l'header può sovrapporsi solo al suo interno. Alza l'header stesso con uno z-index superiore al contenuto successivo, per esempio z-index: 50, invece di alzare il menu a tendina.

Come funziona davvero sticky

Nascondi scorrendo in giù, mostra scorrendo in su

Ridurre senza salti nel layout

L'header sticky di base

Header sticky dentro una pagina che scorre

Scorri il riquadro. L'header resta in cima e il link all'ancora si ferma sotto di esso grazie a scroll-padding-top.

Nascondi scorrendo in giù, mostra scorrendo in su

CSS per gli stati nascosto e ridotto

Lo script imposta solo attributi data. Ogni cambiamento visivo vive nel CSS.

Hook React: useHideOnScroll

Restituisce due booleani che puoi applicare all'header come attributi data. La soglia di 8px ignora i piccoli tremolii.

Le insidie dell'header sticky

Sintomi e soluzioni

Sticky semplice

Riduzione

Scomparsa allo scroll

Demo di scroll dal vivo

Passa tra semplice, riduzione e scomparsa allo scroll, poi scorri dentro il riquadro.

Modalità dell'header

Pagina demo scorrevole

Marchio

Scorri in giù, poi torna un po' su.

Stato dell'header: visibile

Stato dell'header: visibile, scorso

Stato dell'header: nascosto

Stato dell'header: nascosto, scorso

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito