edubun
Nederlands

Flexbox

Vóór flexbox waren er trucs nodig om een blok verticaal te centreren. Met display: flex zijn twee declaraties genoeg: justify-content en align-items.

Eén rij of één kolom

Met flexbox, de CSS Flexible Box Layout-module, deel je een groep blokken langs één lijn in. Stel display: flex in op een container en de directe kinderen, de flex-items, komen naast elkaar te staan in plaats van onder elkaar. Die ene declaratie is genoeg voor een menubalk, een rij knoppen of een kaart waarvan de voettekst onderaan moet blijven. Flexbox werkt met één dimensie tegelijk: een rij of een kolom. Als je rijen en kolommen samen nodig hebt, is grid, in het volgende hoofdstuk, meestal het betere hulpmiddel.

In een rij loopt de hoofdas van links naar rechts (in het Engels) en de dwarsas van boven naar beneden. justify-content werkt langs de hoofdas, align-items langs de dwarsas.

Twee assen

Alles in flexbox wordt beschreven met twee assen. De hoofdas is de richting waarin de items lopen, ingesteld door flex-direction: row (standaard) of column. De dwarsas staat daar loodrecht op. justify-content verdeelt de items langs de hoofdas: flex-start, center, flex-end, space-between (eerste en laatste item aan de randen, gelijke afstanden ertussen) of space-around. align-items plaatst ze op de dwarsas: stretch (standaard, alle items even hoog als het hoogste), flex-start, center of flex-end. Je centreert een blok dus in beide richtingen met justify-content: center en align-items: center.

.bar {
  display: flex;
  justify-content: space-between;  /* logo left, menu right */
  align-items: center;             /* vertically centred */
  gap: 16px;                       /* space between items */
}
.cards { display: flex; flex-wrap: wrap; gap: 12px; }
.card  { flex: 1 1 200px; }        /* grow, shrink, start at 200px */
Een kopbalk en een rij kaarten die doorloopt op nieuwe regels.

Tussenruimte en regelomloop

gap zet ruimte tussen items zonder iets aan de buitenranden toe te voegen. Dat is meestal wat je wilt en wat met marges onhandig wordt. Standaard blijven flex-items op één regel en krimpen ze om te passen, ook als ze daardoor worden samengedrukt. Met flex-wrap: wrap kunnen ze naar een nieuwe regel als er onvoldoende ruimte is. Zo kan een rij van vier kaarten op een laptop veranderen in twee rijen van twee op een tablet en één kolom op een telefoon, zonder mediaquery.

Hoe items groeien en krimpen

De verkorte eigenschap flex op een item accepteert drie waarden. flex-grow zegt hoeveel van de overblijvende ruimte het item krijgt vergeleken met zijn broers en zussen; flex-shrink zegt hoe gemakkelijk het krimpt als de ruimte opraakt; flex-basis is de begingrootte vóór het groeien of krimpen. flex: 1 1 200px betekent beginnen bij 200 pixels en extra ruimte gelijk delen met andere items die ook grow 1 hebben. Alleen flex: 1 is kort voor 1 1 0%, waardoor alle items even breed worden. Geef één item flex-grow: 2 en de andere 1 en het krijgt tweemaal hun aandeel van de overblijvende ruimte.

Visuele volgorde en werkelijke volgorde

Met flexbox kun je de zichtbare volgorde van items veranderen via flex-direction: row-reverse of de eigenschap order, zonder de HTML aan te raken. Wees daar voorzichtig mee. Toetsenbordfocus en schermlezers volgen nog steeds de HTML-volgorde. Als het scherm dus Contact vóór Home toont, maar Tab eerst Home bezoekt, raken toetsenbordgebruikers de weg kwijt. Als de volgorde van belang is voor de betekenis, verander die dan in de HTML.

flexcontainerDe ouder met display: flex
flex-itemEen direct kind van een flexcontainer
hoofdasLooprichting; ingesteld met flex-direction
justify-contentVerdeelt items langs de hoofdas
align-itemsPlaatst items op de dwarsas
tussenruimteRuimte tussen items, niet aan de randen
flex: 1 1 200pxgrow 1, shrink 1, basis 200px
  1. Welke declaratie maakt een element tot flexcontainer?
    • display: flex
    • flex: 1
    • position: flex
  2. Welke eigenschap verdeelt items horizontaal in een rij?
    • justify-content
    • align-items
    • flex-wrap
  3. Wat regelt justify-content bij flex-direction: column?
    • Verticale verdeling
    • Horizontale verdeling
    • Lettergrootte
  4. Welke waarde zet het eerste en laatste item aan de randen met gelijke tussenruimten?
    • space-between
    • space-around
    • center
  5. Wat is de standaardwaarde van align-items?
    • stretch
    • center
    • flex-start
  6. Vier items hebben flex: 1 in een container van 400px zonder tussenruimten. Hoe breed is elk item?
  7. Drie items met flex-basis 0 delen 400px. Eén heeft flex-grow 2, de andere 1. Hoe breed is het grote item?
  8. Wat maakt flex-wrap: wrap mogelijk?
    • Items gaan naar een nieuwe regel als er geen ruimte is
    • Tekst loopt om binnen items
    • Items overlappen
  9. De eigenschap order zet Contact als eerste op het scherm, maar het staat als laatste in de HTML. Wat bezoekt het nog steeds als laatste?
    • Toetsenbordfocus en schermlezers
    • De muisaanwijzer
    • Niets
  10. In hoeveel dimensies tegelijk deelt flexbox in?
Belangrijkste punten
  • display: flex zet de directe kinderen langs de hoofdas op een rij.
  • justify-content op de hoofdas, align-items op de dwarsas, gap ertussen.
  • flex: grow shrink basis; flex-wrap: wrap voor rijen die opnieuw omlopen; houd de visuele volgorde gelijk aan de HTML-volgorde.
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