Kleur en eenheden
Lichtgrijze tekst #bbbbbb op wit heeft een contrastverhouding van 1.92 op 1. WCAG vraagt voor normale tekst minstens 4.5 op 1.
Manieren om een kleur te schrijven
CSS accepteert kleuren in verschillende notaties, die allemaal op hetzelfde neerkomen: hoeveelheden rood, groen en blauw licht op het scherm. Kleurnamen zoals red, navy of rebeccapurple zijn goed leesbaar maar beperkt. Hexnotatie schrijft rood, groen en blauw elk als twee hexadecimale cijfers, van 00 tot ff (0 tot 255): #1a5fb4 is 26 rood, 95 groen en 180 blauw, een middenblauwe kleur. rgb(26 95 180) zegt hetzelfde in decimale notatie. hsl(210 80% 40%) beschrijft een kleur met kleurtoon (een hoek op de kleurencirkel, waar 0 rood is, 120 groen en 240 blauw), verzadiging en lichtheid. Daardoor kun je gemakkelijk een lichtere of donkerdere tint van dezelfde kleurtoon maken door één getal te veranderen.
color: navy; color: #1a5fb4; /* same as #1A5FB4 */ color: #36c; /* short form of #3366cc */ color: rgb(26 95 180); color: rgb(26 95 180 / 50%); /* half transparent */ color: hsl(210 80% 40%); background-color: transparent;
Een vierde waarde na een schuine streep stelt het alfakanaal in: rgb(0 0 0 / 50%) is zwart met halve dekking, zodat wat erachter ligt doorschijnt. color stelt de tekstkleur in, background-color de vulling achter een element en border-color de rand. Het sleutelwoord currentColor betekent de tekstkleur van het element, handig voor pictogrammen en randen die bij de tekst moeten passen.
Contrast is niet vrijblijvend
Tekst die qua lichtheid te weinig van de achtergrond verschilt, is voor veel mensen moeilijk leesbaar: slechtzienden, oudere lezers en iedereen die een telefoon in de zon leest. WCAG 2.2, de toegankelijkheidsrichtlijnen van het W3C, meet dit als contrastverhouding van 1 op 1 (geen verschil) tot 21 op 1 (zwart op wit). Succescriterium 1.4.3 vraagt minstens 4.5 op 1 voor normale tekst en 3 op 1 voor grote tekst, volgens WCAG minstens 18 punt of 14 punt vet. Donkergrijs #767676 op wit voldoet net met 4.54 op 1; #777777 voldoet net niet met 4.48. De ontwikkelaarstools van de browser tonen de verhouding wanneer je een tekstelement inspecteert, dus je hoeft niet te gokken.
Kleur mag ook nooit de enige manier zijn om informatie te tonen. Een formulier dat fouten alleen aangeeft door een rand rood te maken, sluit iedereen uit die rood slecht ziet; voeg ook een melding of pictogram toe.
Absolute en relatieve eenheden
Lengten hebben een eenheid nodig, behalve nul. px is de CSS-pixel, een vaste eenheid; op schermen met een hoge pixeldichtheid beslaat één CSS-pixel meerdere fysieke pixels, zodat hij voor het oog ongeveer even groot blijft. Relatieve eenheden schalen mee met iets anders. em is relatief aan de eigen lettergrootte van het element, dus padding: 0.5em bij tekst van 20 pixels is 10 pixels. rem is relatief aan de lettergrootte van het hoofdelement (html), die in browsers 16 pixels is tenzij de lezer die heeft gewijzigd, dus 1.25rem is normaal 20 pixels. % is relatief aan de ouder, meestal de breedte ervan. vw en vh zijn honderdsten van de breedte en hoogte van het weergavevenster, en ch is ongeveer de breedte van het cijfer nul in het huidige lettertype.
Welke gebruik je? Tekstgrootte in rem houdt rekening met de lezer: als iemand de browser op grotere tekst instelt, groeit alles dat in rem is uitgedrukt mee, terwijl tekst met een vaste px-grootte mogelijk niet meegroeit. Binnenruimte in em groeit mee met de omringde tekst. Pixels zijn prima voor dingen die niet moeten schalen, zoals een rand van 1 pixel.
| hexkleur | #rrggbb, elk paar 00 tot ff |
| hsl() | Kleurtoonhoek, verzadiging %, lichtheid % |
| alfa | Dekking, na een schuine streep: rgb(0 0 0 / 50%) |
| contrastverhouding | 4.5:1 normale tekst, 3:1 grote tekst (WCAG 1.4.3) |
| px | CSS-pixel, vast |
| em | Relatief aan de lettergrootte van het element |
| rem | Relatief aan de lettergrootte van het hoofdelement (standaard 16px) |
| vw / vh | 1% van de breedte / hoogte van het weergavevenster |
- Hoeveel rood zit er in
#ff8000, op een schaal van 0 tot 255? - Hoeveel groen zit er in
#ff8000? - Welke kleurtoonhoek in hsl() is zuiver groen?
- Welke minimale contrastverhouding vraagt WCAG 1.4.3 voor normale tekst?
- 4.5 to 1
- 3 to 1
- 7 to 1
- Voldoet #777777 op wit aan de eis van 4.5 op 1?
- Nee, het is 4.48 op 1
- Ja, het is 4.54 op 1
- Ja, elke grijstint voldoet
- De lettergrootte van het hoofdelement is 16px. Hoeveel pixels is 1.5rem?
- Een element heeft font-size: 20px en padding: 0.5em. Hoeveel pixels binnenruimte is dat?
- Het weergavevenster is 400px breed. Hoe breed is 50vw?
- Waarom stel je tekstgrootte in rem in en niet in px?
- Het volgt de browserinstelling voor tekstgrootte van de lezer
- Het is altijd kleiner
- Het laadt sneller
- Een formulier geeft fouten alleen met een rode rand aan. Wat ontbreekt?
- Een melding of pictogram, want alleen kleur is niet genoeg
- Donkerder rood
- Niets
- Kleurnamen, hex, rgb() en hsl(); een schuine streep voegt alfa toe.
- WCAG 1.4.3: 4.5:1 voor normale tekst, 3:1 voor grote tekst; nooit alleen kleur.
- px is vast; em volgt de lettergrootte van het element; rem volgt het hoofdelement (standaard 16px).
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