edubun
Italiano

Basi della griglia

grid-template-columns: repeat(3, 1fr) crea tre colonne uguali in una riga di codice, e il browser mette ogni figlio nella prossima cella libera.

Righe e colonne insieme

La griglia, il modulo CSS Grid Layout, è fatta per l'impaginazione in due dimensioni: righe e colonne insieme. Disegni la griglia sul contenitore e gli elementi cadono nelle sue celle. Il flexbox parte dagli elementi e lascia che trovino da soli le loro dimensioni; la griglia parte dall'impaginazione e ci sistema dentro gli elementi. Per questo è lo strumento naturale per gallerie di foto, elenchi di schede e la forma complessiva di una pagina con intestazione, barra laterale, contenuto principale e piè di pagina.

.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);  /* three equal columns */
  gap: 10px;
}
.gallery .wide { grid-column: span 2; }    /* this item covers two columns */
Una galleria a tre colonne con un elemento largo.

Tracce e unità fr

grid-template-columns elenca la larghezza di ogni colonna, chiamata traccia. Puoi usare qualsiasi lunghezza, come 200px 1fr, ma la griglia aggiunge un'unità tutta sua: fr, una frazione dello spazio libero. 1fr 1fr 1fr crea tre colonne uguali; 2fr 1fr rende la prima colonna larga il doppio della seconda. L'unità fr divide solo lo spazio che resta dopo le tracce fisse e gli spazi, quindi 200px 1fr dà una barra laterale di 200 pixel e lascia il resto alla colonna principale. repeat(3, 1fr) è un modo più breve di scrivere 1fr 1fr 1fr. grid-template-rows fa lo stesso per le righe, ma spesso le righe si lasciano stare e diventano alte quanto il loro contenuto.

repeat(3, 1fr) con uno spazio di 20px. I numeri in basso sono le linee della griglia, da 1 a 4. L'elemento verde occupa due colonne, dalla linea 1 alla linea 3.

Posizionare gli elementi

Per impostazione predefinita gli elementi riempiono la griglia nell'ordine del sorgente, una cella ciascuno, da sinistra a destra e poi sulla riga successiva. Per ingrandire un elemento, grid-column: span 2 gli fa coprire due colonne, e grid-row: span 2 due righe. Le linee tra le tracce sono numerate da 1, quindi una griglia a tre colonne ha le linee da 1 a 4, e grid-column: 1 / 3 significa dalla linea 1 alla linea 3. grid-column: 1 / -1 allunga un elemento su tutta la larghezza, perché i numeri negativi contano dalla fine.

Dare un nome alle aree

Per l'impaginazione di una pagina, grid-template-areas ti permette di disegnare lo schema con le parole. Ogni stringa tra virgolette è una riga e ogni parola è una cella; ripetere una parola fa estendere un'area su quelle celle. Poi ogni elemento riceve grid-area con il nome corrispondente. Lo schema qui sotto si legge quasi come uno schizzo: l'intestazione in alto, barra laterale e contenuto principale affiancati, il piè di pagina in fondo. Cambiare l'impaginazione per un telefono significa riscrivere solo queste poche stringhe, spesso dentro una media query.

.page {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-areas:
    "head head"
    "side main"
    "foot foot";
  gap: 16px;
}
header { grid-area: head; }
aside  { grid-area: side; }
main   { grid-area: main; }
footer { grid-area: foot; }
L'impaginazione di un'intera pagina disegnata con i nomi delle aree.

Colonne che si adattano allo schermo

Uno schema delle guide di MDN sulla griglia merita di essere imparato a memoria: grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)). minmax(150px, 1fr) dice che ogni colonna deve essere larga almeno 150 pixel e può crescere per dividersi lo spazio, e auto-fill crea tutte le colonne che ci stanno. Il risultato è una galleria che mostra due colonne su un telefono e cinque o sei su uno schermo largo, anche qui senza media query. Come il flexbox, la griglia può disporre gli elementi in un ordine diverso dall'HTML, e vale la stessa cautela: tieni uguali l'ordine di lettura e l'ordine visivo.

contenitore grigliaIl genitore con display: grid
tracciaUna riga o una colonna della griglia
frUna frazione dello spazio libero
repeat(3, 1fr)Uguale a 1fr 1fr 1fr
linea della grigliaNumerate da 1; 3 colonne hanno le linee da 1 a 4
span 2L'elemento copre due tracce
grid-template-areasDisegna lo schema con i nomi, una stringa per riga
minmax()Una dimensione di traccia tra un minimo e un massimo
  1. Per l'impaginazione in quante dimensioni è pensata la griglia?
  2. Una griglia di 600px ha le colonne 1fr 2fr e nessuno spazio. Quanto è larga la seconda colonna?
  3. Una griglia di 700px ha le colonne 200px 1fr e uno spazio di 20px. Quanto è larga la colonna 1fr?
  4. Quante linee di colonna (linee verticali della griglia) ha una griglia a 4 colonne?
  5. Che cosa fa grid-column: 1 / -1?
    • Estende l'elemento su tutte le colonne
    • Nasconde l'elemento
    • Lo mette solo nell'ultima colonna
  6. Di che cosa è l'abbreviazione repeat(4, 1fr)?
    • 1fr 1fr 1fr 1fr
    • 4fr
    • 1fr 4fr
  7. In grid-template-areas, che cosa rappresenta una stringa tra virgolette?
    • Una riga
    • Una colonna
    • Un elemento
  8. Quale proprietà assegna un elemento a un'area con nome?
  9. Che cosa significa minmax(150px, 1fr) per una colonna?
    • Almeno 150px, poi cresce dividendo lo spazio libero
    • Esattamente 150px
    • Al massimo 150px
  10. Che cosa è adatto a un layout di pagina bidimensionale con intestazione, barra laterale e piè di pagina?
    • grid
    • flexbox
    • float
Punti chiave
  • display: grid più grid-template-columns disegna le tracce; fr divide lo spazio libero.
  • Gli elementi riempiono le celle in ordine; span e i numeri delle linee li posizionano.
  • grid-template-areas disegna un layout di pagina con dei nomi; repeat(auto-fill, minmax()) adatta le colonne allo schermo.
Fonti di questo corso (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Consultato il: 2026-10-17