Basis van grid
grid-template-columns: repeat(3, 1fr) maakt met één regel drie gelijke kolommen en de browser plaatst elk kind in de volgende vrije cel.
Rijen en kolommen tegelijk
Grid, de CSS Grid Layout-module, is gemaakt voor tweedimensionale indeling: rijen en kolommen samen. Je tekent het raster op de container en de items komen in de cellen. Waar flexbox begint met de items en hun afmetingen daaruit laat ontstaan, begint grid met de indeling en past het de items daarin. Daardoor is het een logische keuze voor fotogalerijen, kaartoverzichten en de algemene vorm van een pagina met een kop, zijbalk, hoofdinhoud en voettekst.
.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 */Sporen en de eenheid fr
grid-template-columns somt de breedte op van elke kolom, een spoor genoemd. Je kunt elke lengte gebruiken, zoals 200px 1fr, maar grid voegt een eigen eenheid toe: fr, één deel van de vrije ruimte. 1fr 1fr 1fr maakt drie gelijke kolommen; 2fr 1fr maakt de eerste kolom tweemaal zo breed als de tweede. De eenheid fr verdeelt alleen de ruimte die overblijft na vaste sporen en tussenruimten. Dus 200px 1fr geeft een zijbalk van 200 pixels en laat de hoofdkolom de rest innemen. repeat(3, 1fr) is een kortere schrijfwijze voor 1fr 1fr 1fr. grid-template-rows doet hetzelfde voor rijen, maar vaak laat je rijen ongemoeid en worden ze zo hoog als hun inhoud.
Items plaatsen
Standaard vullen items het raster in bronvolgorde, elk één cel, van links naar rechts en dan op de volgende rij. Om een item groter te maken, laat grid-column: span 2 het twee kolommen beslaan en grid-row: span 2 twee rijen. De lijnen tussen sporen zijn genummerd vanaf 1, dus een raster met drie kolommen heeft lijnen 1 tot 4 en grid-column: 1 / 3 betekent van lijn 1 tot lijn 3. grid-column: 1 / -1 rekt een item over de hele breedte uit, omdat negatieve getallen vanaf het einde tellen.
Gebieden namen geven
Voor een pagina-indeling kun je met grid-template-areas de indeling met woorden tekenen. Elke tekenreeks tussen aanhalingstekens is één rij en elk woord is één cel; door een woord te herhalen laat je een gebied die cellen beslaan. Daarna krijgt elk item grid-area met de bijbehorende naam. De indeling hieronder leest bijna als een schets: de kop over de bovenkant, een zijbalk en de hoofdinhoud naast elkaar en de voettekst onderaan. De indeling voor een telefoon veranderen betekent alleen deze paar tekenreeksen herschrijven, vaak binnen een mediaquery.
.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; }Kolommen die op het scherm passen
Eén patroon uit de gridhandleidingen van MDN is het onthouden waard: grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)). minmax(150px, 1fr) zegt dat elke kolom minstens 150 pixels moet zijn en mag groeien om de ruimte te delen. auto-fill maakt zo veel kolommen als passen. Het resultaat is een galerij met twee kolommen op een telefoon en vijf of zes op een breed scherm, opnieuw zonder mediaquery. Net als bij flexbox kan grid items in een andere volgorde plaatsen dan de HTML. Dezelfde waarschuwing geldt: houd leesvolgorde en visuele volgorde gelijk.
| gridcontainer | De ouder met display: grid |
| spoor | Eén rij of één kolom van het raster |
| fr | Eén deel van de vrije ruimte |
| repeat(3, 1fr) | Gelijk aan 1fr 1fr 1fr |
| rasterlijn | Genummerd vanaf 1; 3 kolommen hebben lijnen 1 tot 4 |
| span 2 | Item beslaat twee sporen |
| grid-template-areas | Tekent de indeling met namen, één tekenreeks per rij |
| minmax() | Een spoorgrootte tussen een minimum en een maximum |
- Voor indeling in hoeveel dimensies is grid ontworpen?
- Een raster van 600px heeft kolommen 1fr 2fr en geen tussenruimte. Hoe breed is de tweede kolom?
- Een raster van 700px heeft kolommen 200px 1fr en een tussenruimte van 20px. Hoe breed is de kolom van 1fr?
- Hoeveel kolomlijnen (verticale rasterlijnen) heeft een raster met 4 kolommen?
- Wat doet
grid-column: 1 / -1?- Rekt het item uit over alle kolommen
- Verbergt het item
- Zet het alleen in de laatste kolom
- Waarvan is
repeat(4, 1fr)een verkorte schrijfwijze?- 1fr 1fr 1fr 1fr
- 4fr
- 1fr 4fr
- Waarvoor staat één tekenreeks tussen aanhalingstekens in grid-template-areas?
- Eén rij
- Eén kolom
- Eén item
- Welke eigenschap wijst een item toe aan een benoemd gebied?
- Wat betekent minmax(150px, 1fr) voor een kolom?
- Minstens 150px, groeiend om de vrije ruimte te delen
- Precies 150px
- Hoogstens 150px
- Wat past bij een tweedimensionale pagina-indeling met kop, zijbalk en voettekst?
- grid
- flexbox
- float
- display: grid plus grid-template-columns tekent de sporen; fr verdeelt de vrije ruimte.
- Items vullen cellen op volgorde; span en lijnnummers bepalen hun plaats.
- Met grid-template-areas teken je een pagina-indeling met namen; repeat(auto-fill, minmax()) past kolommen aan het scherm aan.
Bronnen van deze cursus (5)
- 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).
Geraadpleegd: 2026-10-17