Strumento per sviluppatori

Generatore di Flexbox

Imposta le proprietà e leggi, in parole semplici, cosa fanno davvero.

Generatore di Flexbox Funziona sul tuo dispositivo
  • Funziona nel tuo browser — il tuo testo non viene mai inviato da nessuna parte
  • Nessuna registrazione, nessuna quota, gratis da usare quante volte vuoi

Come funziona

Flexbox non è complicato, ma c'è una cosa che fa cadere quasi tutti: justify-content e align-items non significano orizzontale e verticale. Significano lungo la direzione e attraverso di essa, e la direzione è qualcosa che imposti tu.

La trappola, detta chiaramente

Con flex-direction: row, justify-content funziona in orizzontale e align-items in verticale. Passa a column e si scambiano completamente. Ogni ora persa con flexbox è essenzialmente questo. La spiegazione qui sotto si aggiorna quando cambi la direzione, così il rapporto è visibile anziché da memorizzare.

Asse principale e asse trasversale

L'asse principale è quello lungo cui scorrono gli elementi, impostato da flex-direction. L'asse trasversale gli è perpendicolare. justify-content distribuisce lo spazio lungo l'asse principale; align-items posiziona gli elementi sull'asse trasversale. Una volta che questi due nomi si fissano in mente, il resto ne consegue.

gap, e perché ha sostituito i margini

gap inserisce spazio tra gli elementi senza aggiungerlo prima del primo e dopo l'ultimo, che è esattamente ciò che i margini sbagliano e che prima si risolveva con trucchi :last-child. È supportato da ogni browser attuale e non c'è più motivo di evitarlo.

nowrap significa restringere, non traboccare

Il valore predefinito è nowrap, e gli elementi si restringono sotto la loro dimensione naturale per starci anziché andare a capo su una nuova riga. Per questo il testo a volte si schiaccia in modo inatteso dentro una riga flex. Impostando wrap gli elementi possono invece scendere; min-width: 0 su un elemento figlio gli impedisce di restringersi oltre il suo contenuto.

Centrare in entrambe le direzioni

justify-content: center con align-items: center centra un elemento in entrambe le direzioni indipendentemente da flex-direction, l'unica combinazione che vale la pena memorizzare a fondo.

FAQ

Generatore di Flexbox: domande

Perché align-items sposta le cose in orizzontale?

Perché flex-direction è column. Le due proprietà seguono la direzione, non lo schermo.

Qual è la differenza tra asse principale e asse trasversale?

L'asse principale è la direzione in cui scorrono gli elementi, impostata da flex-direction. L'asse trasversale gli è perpendicolare.

Come centro qualcosa in entrambe le direzioni?

justify-content: center insieme a align-items: center.

Perché il mio testo è schiacciato?

Il valore predefinito nowrap restringe gli elementi per farli stare. Imposta flex-wrap: wrap, oppure min-width: 0 sull'elemento figlio.

Posso usare gap con flexbox?

Sì, in ogni browser attuale. È meglio dei margini perché non aggiunge spazio alle estremità.