edubun
Nederlands

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 */
Een galerij met drie kolommen en één breed item.

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.

repeat(3, 1fr) met een tussenruimte van 20px. De getallen onderaan zijn de rasterlijnen, 1 tot 4. Het groene item beslaat twee kolommen, van lijn 1 tot lijn 3.

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; }
Een volledige pagina-indeling getekend met gebiedsnamen.

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.

gridcontainerDe ouder met display: grid
spoorEén rij of één kolom van het raster
frEén deel van de vrije ruimte
repeat(3, 1fr)Gelijk aan 1fr 1fr 1fr
rasterlijnGenummerd vanaf 1; 3 kolommen hebben lijnen 1 tot 4
span 2Item beslaat twee sporen
grid-template-areasTekent de indeling met namen, één tekenreeks per rij
minmax()Een spoorgrootte tussen een minimum en een maximum
  1. Voor indeling in hoeveel dimensies is grid ontworpen?
  2. Een raster van 600px heeft kolommen 1fr 2fr en geen tussenruimte. Hoe breed is de tweede kolom?
  3. Een raster van 700px heeft kolommen 200px 1fr en een tussenruimte van 20px. Hoe breed is de kolom van 1fr?
  4. Hoeveel kolomlijnen (verticale rasterlijnen) heeft een raster met 4 kolommen?
  5. Wat doet grid-column: 1 / -1?
    • Rekt het item uit over alle kolommen
    • Verbergt het item
    • Zet het alleen in de laatste kolom
  6. Waarvan is repeat(4, 1fr) een verkorte schrijfwijze?
    • 1fr 1fr 1fr 1fr
    • 4fr
    • 1fr 4fr
  7. Waarvoor staat één tekenreeks tussen aanhalingstekens in grid-template-areas?
    • Eén rij
    • Eén kolom
    • Eén item
  8. Welke eigenschap wijst een item toe aan een benoemd gebied?
  9. Wat betekent minmax(150px, 1fr) voor een kolom?
    • Minstens 150px, groeiend om de vrije ruimte te delen
    • Precies 150px
    • Hoogstens 150px
  10. Wat past bij een tweedimensionale pagina-indeling met kop, zijbalk en voettekst?
    • grid
    • flexbox
    • float
Belangrijkste punten
  • 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