CSS position: cinque valori, una demo dal vivo

Guida a CSS position

CSS position: demo di static, relative, absolute, fixed, sticky | We.Inc

Passa un elemento tra static, relative, absolute, fixed e sticky dentro una demo scorrevole. Containing block, inset, risoluzione dei problemi con sticky e centratura spiegati.

La proprietà position sceglie come viene posizionato un elemento. static è il flusso normale. relative lo sposta leggermente mantenendo il suo spazio. absolute lo toglie dal flusso e lo posiziona rispetto all'antenato posizionato più vicino. fixed lo fissa al viewport. sticky scorre normalmente finché non raggiunge una soglia come top: 0, poi resta lì.

I cinque valori

La demo qui sotto ha un box arancione dentro un'area scorrevole. Cambia il suo valore di position, sposta gli offset, scorri e osserva rispetto a cosa viene misurato. Seguono una guida ai containing block, una checklist per quando sticky non resta fisso e la shorthand inset.

Domande frequenti

Qual è la differenza tra absolute e relative?

relative sposta visivamente un elemento ma lascia il suo spazio originale nel layout, quindi niente intorno si muove. absolute toglie del tutto l'elemento dal layout, gli elementi vicini chiudono lo spazio, e top o left vengono misurati dall'antenato posizionato più vicino invece che da dove si sarebbe trovato.

Perché position: sticky non funziona?

Le cause più comuni sono un valore top mancante, un antenato con overflow hidden o auto, oppure un genitore che non è più alto dell'elemento sticky. Segui in ordine la checklist di questa pagina; i primi due punti risolvono la maggior parte dei casi.

Rispetto a cosa si posiziona absolute?

Rispetto al suo containing block: il padding box dell'antenato più vicino con un valore di position diverso da static. Valgono anche gli antenati con un transform, un filter o certi valori di contain. Se non ce n'è nessuno, è l'initial containing block, che ha le dimensioni del viewport.

Perché il mio header fixed si muove con la pagina?

Un antenato ha transform, perspective, filter, backdrop-filter, will-change: transform o contain: paint. Ognuno di questi trasforma quell'antenato nel containing block per i discendenti fixed, quindi l'header resta fissato a lui invece che allo schermo.

Cos'è inset in CSS?

Una shorthand per top, right, bottom e left, che segue lo stesso schema da uno a quattro valori di margin. inset: 0 estende un elemento posizionato su tutto il suo containing block. inset-inline e inset-block impostano le coppie per ciascun asse.

Il containing block, in parole semplici

Centrare con il posizionamento absolute

Ogni valore nel dettaglio

Valori di position

Cosa crea un containing block per absolute e fixed

Antenati che catturano i discendenti posizionati (secondo MDN)

Schemi che userai

Badge nell'angolo di una card

La card è l'antenato posizionato. Gli offset negativi spingono il badge per metà fuori dall'angolo.

Intestazione di tabella sticky

Il contenitore scorre, quindi th con top: 0 resta fisso al suo interno. Lo sfondo evita che le righe si vedano attraverso.

Shorthand inset

Stesso schema di margin: un valore per tutti i lati, due per verticale e orizzontale, quattro in senso orario a partire dall'alto.

Playground di position

Valore di position

Il genitore ha position: relative

Gli offset vengono ignorati. Il box sta nel flusso normale tra i paragrafi.

Il box è disegnato spostato, ma lo spazio dove si troverebbe viene mantenuto. Gli elementi vicini non si muovono.

Misurato dal genitore tratteggiato, che ha position: relative.

Nessun genitore posizionato, quindi viene misurato dall'area scorrevole della demo, il primo antenato posizionato più in alto.

Fissato al riquadro della demo mentre scorri. Il riquadro ha un transform, che lo rende il containing block al posto della finestra del browser.

Scorre con il testo finché non si trova a top pixel dal bordo superiore del contenitore che scorre, poi resta lì finché il suo genitore non esce dalla vista.

Area demo scorrevole

Scorri dentro questo riquadro. Il testo è di riempimento, così c'è qualcosa da scorrere.

Genitore

Primo paragrafo prima del box.

Paragrafo dopo il box. Osserva se sale quando il box esce dal flusso.

Riga {n} di contenuto aggiuntivo da scorrere.

Contenuto dopo il genitore, riga {n}.

Copia CSS

Perché fixed resta nel riquadro: il riquadro ha transform: translateZ(0). Qualsiasi transform trasforma un elemento nel containing block per i discendenti fixed. In una pagina reale senza un antenato di questo tipo, fixed si aggancia alla finestra del browser.

Sticky non funziona: checklist

Header sticky nascosto dietro altri contenuti? Vedi

z-index e stacking context

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito