Guida completa a CSS Flexbox: padroneggia i layout flessibili nel 2026

12 min di lettura

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.

ValoreAsse principaleDirezione
rowOrizzontaleDa sinistra a destra
row-reverseOrizzontaleDa destra a sinistra
columnVerticaleDall'alto verso il basso
column-reverseVerticaleDal 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.

ProprietaUso
justify-content: centerCentra sull'asse principale
space-betweenDistribuisce lo spazio tra gli elementi
align-items: centerCentra sull'asse trasversale
align-items: stretchAllunga 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-between per separare logo e menu
  • Sticky footer: wrapper in colonna con min-height: 100vh e contenuto principale con flex: 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
AspettoFlexboxGrid
Dimensione1D2D
Punto forteAllineamentoStruttura
Uso tipicoComponentiLayout 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.