Generatore CSS Flexbox

Genera CSS
Avanti

Flexbox è la scelta ideale per layout unidimensionali: righe di schede, barre di navigazione, hero centrati, moduli. Il modello contenitore-elemento è potente, ma le sue proprietà interagiscono in modi non ovvi. Questo generatore elimina le congetture sul contenitore: scegli flex-direction, justify-content, align-items, flex-wrap e gap, e ottieni una regola CSS pulita da copiare direttamente nel tuo foglio di stile.

Come generare il CSS

  1. 1

    Scegli una direzione

    Scegli row, column o le varianti inverse. Imposta flex-direction, cioè l'asse lungo cui scorrono gli elementi.

  2. 2

    Imposta justify-content

    Scegli come distribuire gli elementi lungo l'asse principale: inizio, centro, space-between, space-around o fine.

  3. 3

    Imposta align-items

    Scegli come allineare gli elementi sull'asse incrociato: stretch, inizio, centro o fine.

  4. 4

    Imposta gap e wrap

    Aggiungi spazio tra gli elementi in pixel e decidi se gli elementi vanno a capo.

  5. 5

    Copia il CSS

    Il generatore produce la regola del contenitore con tutte le proprietà, pronta da incollare nel foglio di stile.

Proprietà del contenitore

Proprietà Valori Effetto
flex-direction riga / colonna / riga-inversa / colonna-inversa Asse principale
flex-wrap nowrap / wrap / wrap-inversa Se gli elementi si avvolgono
justify-content flex-start / center / flex-end / space-between / space-around / space-evenly Distribuzione dell’asse principale
align-items flex-start / center / flex-end / baseline / stretch Allineamento dell’asse incrociato di ogni riga
align-content stessi valori + space-between / space-around Quando avvolto, distribuzione dell’asse incrociato delle righe
gap (row-gap, column-gap) lunghezza Spaziatura tra gli elementi

Proprietà degli elementi

Proprietà Valori Effetto
flex-grow 0+ (senza unità) Quota di spazio residuo da assorbire
flex-shrink 0+ (senza unità) Quota di sovraccarico da ridurre
flex-basis lunghezza o auto Dimensione iniziale prima di crescere/ridursi
flex shorthand (1 1 auto, ecc.) Tutti e tre in una volta
align-self auto / flex-start / center / flex-end / baseline / stretch Sovrascrive align-items per un elemento
order intero Riordina visivamente senza cambiare il DOM

Il trucco flex: 1

flex: 1 è shorthand per flex: 1 1 0%. Fa sì che un elemento:

  • Cresca per riempire lo spazio disponibile (crescita: 1)
  • Si riduca se necessario (riduzione: 1)
  • Parta da una dimensione zero (base: 0%)

Per colonne di larghezza uguale, flex: 1 su ogni elemento fornisce una divisione perfetta. Per barre laterali che non devono ridursi sotto il contenuto, usa flex: 0 0 240px (nessuna crescita, nessuna riduzione, base di 240px).

Modelli comuni

Eroe centrato

.hero {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Navbar con logo a sinistra, link a destra

.nav {
  display: flex;
  align-items: center;
  gap: 2rem;
}
.nav-links {
  margin-left: auto;  /* sposta a destra */
  display: flex;
  gap: 1rem;
}

Riga di schede reattiva

.card-row {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
}
.card {
  flex: 1 1 260px;  /* crescita/riduzione, 260px minimo prima di avvolgere */
}

Campo modulo con pulsante (input flessibile, pulsante fisso)

.field {
  display: flex;
  gap: 0.5rem;
}
.field input {
  flex: 1;
}
.field button {
  flex: 0 0 auto;
}

Flexbox vs. Grid

  • Flexbox: una dimensione (riga O colonna). Migliore quando le dimensioni degli elementi sono guidate dal contenuto o quando distribuisci spazio lungo una singola linea.
  • Grid: due dimensioni (righe E colonne con tracce esplicite). Migliore quando il layout ha una struttura di righe e colonne simultaneamente.

Per una barra di navigazione o una pila di schede: Flexbox. Per una griglia di schede prodotto con più righe di schede allineate: CSS Grid. Molte pagine reali usano entrambi, un layout di pagina Grid con Flexbox all’interno dei componenti.

Problemi comuni

  • Elementi che non riempiono il contenitore: il default align-items: stretch si applica solo se gli elementi non hanno altezza fissa. Con altezza esplicita, rimangono a quella dimensione.
  • gap non funziona: controlla il supporto del browser. Il gap flex è arrivato tardi; Safari <14.1 non lo supportava. Ora è universale nel 2024+.
  • Figli di flex colonna che collassano: una colonna flex ha align-items: stretch come default, che allunga gli elementi alla larghezza del contenitore. Se un figlio imposta una larghezza, esce.
  • order è solo visivo: i lettori di schermo e la navigazione da tastiera seguono l’ordine del DOM. Non usare order per rendere il contenuto sensato; usalo solo per la rifinitura visiva.

Domande frequenti

Grid per layout di pagina bidimensionali (righe e colonne insieme). Flexbox per distribuzioni unidimensionali (barra di navigazione, riga di pulsanti, pila). All’interno di una cella Grid, Flexbox per il layout interno. La maggior parte delle interfacce utente complesse utilizza entrambi.

Perché il default di flex-shrink è 1 ma il default di min-width è auto, che equivale alla larghezza del contenuto. Imposta min-width: 0 (o min-inline-size: 0) sull’elemento per consentirgli di ridursi sotto la sua dimensione intrinseca.

display: flex; justify-content: center; align-items: center; sul contenitore. Copre la stragrande maggioranza dei casi di “centra questa cosa” con due righe.

Sì, in tutti i browser moderni. Safari è arrivato tardi (aggiunto in 14.1, aprile 2021); oggi ogni browser principale lo supporta. Sostituisci la spaziatura basata su margin con gap ogni volta che puoi, molto più semplice.

Strumenti correlati