cat html-css/differenze-pratiche-tra-grid-e-flexbox-quando.md

Lezione 43 10 min

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-wrap va 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:

  1. Barre di navigazione (menu): un logo a sinistra, dei link a destra. justify-content: space-between risolve bene questo caso.
  2. Pulsanti e Icone: Un’icona di un lucchetto affiancata al testo “Paga sicuro”.
  3. Card singole: Disporre verticalmente l’immagine, il titolo e il testo all’interno di una singola card promozionale.
  4. Centratura semplice: Il classico trucco di centrare un div a centro schermo.

Scegli GRID per:

  1. 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.
  2. Gallerie di immagini o prodotti: griglie dove le card devono restare allineate sia in verticale che in orizzontale.
  3. Moduli / form complessi: etichette e campi di input che devono incolonnarsi in due colonne parallele.
  4. Sovrapposizioni senza z-index: mettere testi sopra le immagini usando una griglia 1fr e 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:

  1. Usi Grid sul <main> per dividere la pagina in layout (una griglia con sidebar e contenuto).
  2. Dentro la zona del contenuto, usi Grid per creare una griglia che contiene 12 Prodotti.
  3. 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.