cat html-css/differenze-pratiche-tra-grid-e-flexbox-quando.md
Differenze pratiche tra Grid e Flexbox: quando usare quale
Una guida pragmatica per decidere quando usare Flexbox, quando usare Grid e quando combinarli.
Ora che conosci sia Flexbox che CSS Grid, probabilmente ti starai chiedendo: “Quale dovrei usare? Uno sostituisce l’altro?”
La risposta breve è NO. Non sono concorrenti, ma alleati progettati per risolvere problemi diversi. I siti web migliori usano entrambi gli strumenti in contemporanea.
1. La Regola della Dimensione (1D vs 2D)
Il criterio di scelta fondamentale riguarda le dimensioni in cui devi operare:
- Usa FLEXBOX quando hai una serie di elementi da disporre in una sola direzione (o riga orizzontale, o colonna verticale). Anche se con
flex-wrapva a capo, Flexbox “pensa” sempre a una riga per volta. Le righe non sanno cosa fanno le altre righe. - Usa GRID quando hai bisogno di controllare righe e colonne contemporaneamente. Grid rende più semplice mantenere gli elementi allineati anche su righe diverse.
2. L’Approccio al Design (Content-out vs Layout-in)
- Flexbox lavora dal contenuto verso l’esterno. È ideale quando non sai quanto saranno grandi i tuoi elementi e vuoi che si sistemino fluidamente nello spazio disponibile in base a quanto “ingombrano”.
- Grid lavora dall’esterno verso l’interno. È ideale quando vuoi progettare prima una struttura rigida o proporzionale (la griglia), e poi vuoi costringere il contenuto ad adattarsi a quella struttura imposta.
Esempi pratici: Quando usare cosa?
Scegli FLEXBOX per:
- Barre di navigazione (menu): un logo a sinistra, dei link a destra.
justify-content: space-betweenrisolve bene questo caso. - Pulsanti e Icone: Un’icona di un lucchetto affiancata al testo “Paga sicuro”.
- Card singole: Disporre verticalmente l’immagine, il titolo e il testo all’interno di una singola card promozionale.
- Centratura semplice: Il classico trucco di centrare un div a centro schermo.
Scegli GRID per:
- Il macro-layout del sito: definire header in alto, contenuto principale al centro, sidebar a destra, footer in basso.
grid-template-areasè molto leggibile per questo. - Gallerie di immagini o prodotti: griglie dove le card devono restare allineate sia in verticale che in orizzontale.
- Moduli / form complessi: etichette e campi di input che devono incolonnarsi in due colonne parallele.
- Sovrapposizioni senza z-index: mettere testi sopra le immagini usando una griglia
1fre sovrapponendo gli elementi.
Spesso si usano insieme
Non esiste una regola che vieta di nidificarli. Il caso d’uso più comune nel web development moderno è proprio questo:
- Usi Grid sul
<main>per dividere la pagina in layout (una griglia con sidebar e contenuto). - Dentro la zona del contenuto, usi Grid per creare una griglia che contiene 12 Prodotti.
- All’interno della singola card Prodotto, usi Flexbox per impilare orizzontalmente il prezzo e il pulsante “Acquista”.
Saper scegliere tra i due rende il CSS più chiaro: Grid definisce la struttura, Flexbox rifinisce l’allineamento dei componenti.