Guida completa a CSS Flexbox: padroneggia i layout flessibili nel 2026
Impara CSS Flexbox da zero. Contenitore flex, allineamento, grow, shrink, basis e pattern utili come centratura, navbar, griglia di card e holy grail layout.
Che cos'e CSS Flexbox e perche dovresti padroneggiarlo
CSS Flexbox e un modello di layout unidimensionale pensato per distribuire spazio e allineare elementi in modo prevedibile. Risolve problemi storici del CSS che prima richiedevano hack con float, tabelle o posizionamento assoluto.
Oggi Flexbox e essenziale per il frontend moderno perche semplifica centratura, spaziatura, adattamento responsive e ordine visivo dei componenti.
- Centratura semplice su uno o due assi
- Spazio flessibile con elementi che crescono e si riducono
- Layout responsive piu facile da mantenere
Puoi provare gli esempi nel nostro playground di Flexbox.
Il contenitore flex: display flex e l'asse principale
Tutto parte da display: flex applicato al contenitore padre. I figli diretti diventano automaticamente flex item.
Per default gli elementi sono disposti in riga, non vanno a capo, partono dall'inizio dell'asse principale e si allungano sull'asse trasversale.
| Valore | Asse principale | Direzione |
|---|---|---|
row | Orizzontale | Da sinistra a destra |
row-reverse | Orizzontale | Da destra a sinistra |
column | Verticale | Dall'alto verso il basso |
column-reverse | Verticale | Dal basso verso l'alto |
flex-wrap controlla il ritorno a capo, mentre flex-flow unisce direzione e wrap in una sola sintassi.
Proprieta di allineamento: justify-content e align-items
justify-content allinea lungo l'asse principale, mentre align-items lavora sull'asse trasversale.
| Proprieta | Uso |
|---|---|
justify-content: center | Centra sull'asse principale |
space-between | Distribuisce lo spazio tra gli elementi |
align-items: center | Centra sull'asse trasversale |
align-items: stretch | Allunga gli elementi |
Quando hai piu righe, entra in gioco align-content. Per la distanza tra gli elementi, gap e in genere la scelta migliore.
Proprieta dei flex item: grow, shrink e basis
Queste proprieta definiscono come ogni elemento occupa lo spazio disponibile.
- flex-grow: quanto puo espandersi
- flex-shrink: quanto puo restringersi
- flex-basis: la dimensione di partenza
La scorciatoia flex combina tutti e tre i valori. flex: 1 rende l'elemento flessibile, flex: none lo blocca, mentre flex: 0 0 250px imposta una dimensione fissa.
align-self consente di personalizzare l'allineamento di un singolo item e order ne cambia solo l'ordine visivo.
Pattern comuni: centratura, navbar e sticky footer
Flexbox e perfetto per molti pattern ricorrenti dell'interfaccia.
- Centratura perfetta:
display: flex; justify-content: center; align-items: center; - Navbar:
justify-content: space-betweenper separare logo e menu - Sticky footer: wrapper in colonna con
min-height: 100vhe contenuto principale conflex: 1 - Ultimo elemento a destra:
margin-left: auto - Sidebar + contenuto: sidebar fissa e area centrale flessibile
Puoi verificare questi casi nel playground di Flexbox.
Griglia responsive di card e holy grail layout
Per una griglia di card responsive, un pattern comune usa display: flex; flex-wrap: wrap; gap: 24px; sul contenitore e flex: 1 1 300px; sulle card. Ogni card mantiene cosi una larghezza minima sensata ma resta flessibile.
Il holy grail layout combina header, footer, sidebar e contenuto principale. Un wrapper verticale occupa tutta l'altezza della pagina e la zona centrale diventa un altro contenitore flex.
- Wrapper:
display: flex; flex-direction: column; min-height: 100vh; - Centro:
display: flex; flex: 1; - Sidebar:
flex: 0 0 200px; - Contenuto:
flex: 1;
Flexbox vs CSS Grid: quando usare ciascuno
Flexbox e ideale per layout unidimensionali. CSS Grid e piu adatto quando devi controllare righe e colonne insieme.
- Usa Flexbox per navbar, card, form e allineamento interno
- Usa Grid per la struttura generale della pagina o griglie complesse
| Aspetto | Flexbox | Grid |
|---|---|---|
| Dimensione | 1D | 2D |
| Punto forte | Allineamento | Struttura |
| Uso tipico | Componenti | Layout di pagina |
Nella pratica, i due sistemi si completano bene. Provali nel playground di Flexbox e nel generatore CSS Grid.
Errori comuni e consigli avanzati su Flexbox
Alcuni errori compaiono spesso nei progetti con Flexbox:
- Dimenticare che flex-shrink vale 1 di default
- Usare width invece di flex-basis
- Non impostare min-width: 0 quando un testo deve troncare
- Forzare una griglia 2D complessa solo con Flexbox
Consigli utili:
- margin-left: auto spinge un item verso l'estremita opposta
- flex: 1 1 0% distribuisce spesso lo spazio in modo piu uniforme
- Contenitori flex annidati sono molto utili nelle interfacce complesse
- order cambia l'ordine visivo, non quello semantico per l'accessibilita
Per fare pratica, usa il nostro playground interattivo di Flexbox.
Prova questo strumento:
Apri strumento→Domande frequenti
Qual e la differenza tra justify-content e align-items?
justify-content allinea gli elementi lungo l'asse principale, mentre align-items lavora sull'asse trasversale. Con flex-direction: row questo significa di solito orizzontale contro verticale.
Che cosa fa esattamente flex: 1?
flex: 1 di solito equivale a flex-grow: 1, flex-shrink: 1 e flex-basis: 0%. L'elemento cresce, puo restringersi e condivide lo spazio disponibile con gli altri elementi flessibili.
Come centro una div verticalmente e orizzontalmente con Flexbox?
Sul contenitore padre usa display: flex; justify-content: center; align-items: center;. Assicurati anche che il contenitore abbia un'altezza definita, per esempio min-height: 100vh.
Flexbox o Grid: quale dovrei imparare per primo?
Flexbox. E piu semplice, risolve molti problemi comuni di layout nei componenti ed e una buona base prima di passare a CSS Grid.
Perche i miei flex item non vanno a capo?
Perche il valore predefinito di flex-wrap e nowrap. Se vuoi permettere il ritorno a capo, aggiungi flex-wrap: wrap; al contenitore.
Posso usare Flexbox e CSS Grid nello stesso progetto?
Si. E spesso la soluzione migliore: Grid per la struttura generale della pagina e Flexbox per l'allineamento interno di componenti come menu, card e form.