Generatore di Flexbox
Imposta le proprietà e leggi, in parole semplici, cosa fanno davvero.
- 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.
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à.