# Toegankelijke webpagina's maken

> Sketchnote door [Tomomi Imura](https://twitter.com/girlie_mac)
## Quiz voorafgaand aan de les
[Quiz voorafgaand aan de les](https://ff-quizzes.netlify.app/web/)
> De kracht van het web zit in zijn universaliteit. Toegang voor iedereen, ongeacht een beperking, is een essentieel aspect.
>
> \- Sir Timothy Berners-Lee, W3C-directeur en uitvinder van het World Wide Web
Hier is iets dat je misschien zal verrassen: wanneer je toegankelijke websites bouwt, help je niet alleen mensen met een beperking—je maakt het web eigenlijk beter voor iedereen!
Heb je ooit die verlaagde stoepranden op straathoeken opgemerkt? Ze zijn oorspronkelijk ontworpen voor rolstoelen, maar nu helpen ze ook mensen met kinderwagens, bezorgers met karretjes, reizigers met rolkoffers en fietsers. Dat is precies hoe toegankelijke webdesign werkt—oplossingen die één groep helpen, blijken vaak iedereen te helpen. Best gaaf, toch?
In deze les gaan we onderzoeken hoe je websites kunt maken die echt voor iedereen werken, ongeacht hoe ze het web gebruiken. Je ontdekt praktische technieken die al in webstandaarden zijn ingebouwd, gaat aan de slag met testtools en ziet hoe toegankelijkheid je sites gebruiksvriendelijker maakt voor alle gebruikers.
Aan het einde van deze les heb je het vertrouwen om toegankelijkheid een natuurlijk onderdeel van je ontwikkelproces te maken. Klaar om te ontdekken hoe doordachte ontwerpkeuzes het web kunnen openen voor miljarden gebruikers? Laten we beginnen!
> Je kunt deze les volgen op [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon)!
## Begrip van hulpmiddelen voor toegankelijkheid
Voordat we gaan coderen, nemen we even de tijd om te begrijpen hoe mensen met verschillende mogelijkheden het web daadwerkelijk ervaren. Dit is niet alleen theorie—het begrijpen van deze navigatiepatronen in de echte wereld maakt je een veel betere ontwikkelaar!
Hulpmiddelen voor toegankelijkheid zijn geweldige technologieën die mensen met een beperking helpen om op verrassende manieren met websites te communiceren. Zodra je begrijpt hoe deze technologieën werken, wordt het creëren van toegankelijke webervaringen veel intuïtiever. Het is alsof je leert je code te zien door de ogen van iemand anders.
### Schermlezers
[Schermlezers](https://en.wikipedia.org/wiki/Screen_reader) zijn behoorlijk geavanceerde technologieën die digitale tekst omzetten in spraak of braille-uitvoer. Hoewel ze voornamelijk worden gebruikt door mensen met een visuele beperking, zijn ze ook erg nuttig voor gebruikers met leerstoornissen zoals dyslexie.
Ik zie een schermlezer graag als een slimme verteller die een boek voorleest. Het leest inhoud hardop voor in een logische volgorde, kondigt interactieve elementen aan zoals "knop" of "link" en biedt sneltoetsen om door een pagina te navigeren. Maar hier komt het: schermlezers kunnen alleen hun magie doen als we websites bouwen met een goede structuur en betekenisvolle inhoud. Dat is waar jij als ontwikkelaar in beeld komt!
**Populaire schermlezers op verschillende platforms:**
- **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/) (gratis en het populairst), [JAWS](https://webaim.org/articles/jaws/), [Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon) (ingebouwd)
- **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10) (ingebouwd en zeer capabel)
- **Android**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677) (ingebouwd)
- **Linux**: [Orca](https://wiki.gnome.org/Projects/Orca) (gratis en open-source)
**Hoe schermlezers webinhoud navigeren:**
Schermlezers bieden meerdere navigatiemethoden die het browsen efficiënt maken voor ervaren gebruikers:
- **Sequentieel lezen**: Leest inhoud van boven naar beneden, zoals een boek
- **Landmark-navigatie**: Spring tussen paginasecties (header, nav, main, footer)
- **Kopnavigatie**: Spring tussen koppen om de structuur van de pagina te begrijpen
- **Linklijsten**: Genereer een lijst van alle links voor snelle toegang
- **Formuliervelden**: Navigeer direct tussen invoervelden en knoppen
> 💡 **Hier is iets dat me verbaasde**: 68% van de schermlezergebruikers navigeert voornamelijk via koppen ([WebAIM Survey](https://webaim.org/projects/screenreadersurvey9/#finding)). Dit betekent dat je kopstructuur als een routekaart is voor gebruikers—als je het goed doet, help je mensen letterlijk sneller hun weg te vinden in je inhoud!
### Je testworkflow opbouwen
Goed nieuws—effectief testen op toegankelijkheid hoeft niet overweldigend te zijn! Je wilt geautomatiseerde tools combineren (ze zijn fantastisch in het opsporen van duidelijke problemen) met wat handmatig testen. Hier is een systematische aanpak die ik heb gevonden om de meeste problemen te identificeren zonder dat het je hele dag kost:
**Essentiële handmatige testworkflow:**
```mermaid
graph TD
A[Start Testing] --> B{Keyboard Navigation}
B --> C[Tab through all interactive elements]
C --> D{Screen Reader Testing}
D --> E[Test with NVDA/VoiceOver]
E --> F{Zoom Testing}
F --> G[Zoom to 200% and test functionality]
G --> H{Color/Contrast Check}
H --> I[Verify all text meets contrast ratios]
I --> J{Focus Management}
J --> K[Ensure focus indicators are visible]
K --> L[Testing Complete]
```
**Stapsgewijze testchecklist:**
1. **Toetsennavigatie**: Gebruik alleen Tab, Shift+Tab, Enter, Spatie en pijltjestoetsen
2. **Schermlezer testen**: Schakel NVDA, VoiceOver of Narrator in en navigeer met gesloten ogen
3. **Zoom testen**: Test op 200% en 400% zoomniveaus
4. **Kleurcontrast verificatie**: Controleer alle tekst en UI-componenten
5. **Focusindicator testen**: Zorg ervoor dat alle interactieve elementen zichtbare focusstatus hebben
✅ **Begin met Lighthouse**: Open de DevTools van je browser, voer een Lighthouse-toegankelijkheidsaudit uit en gebruik de resultaten om je handmatige testfocusgebieden te bepalen.
### Zoom- en vergrotingstools
Weet je hoe je soms inzoomt op je telefoon als de tekst te klein is, of je laptop scherm probeert te lezen in fel zonlicht? Veel gebruikers vertrouwen dagelijks op vergrotingstools om inhoud leesbaar te maken. Dit omvat mensen met een verminderd gezichtsvermogen, ouderen en iedereen die ooit heeft geprobeerd een website buiten te lezen.
Moderne zoomtechnologieën zijn verder geëvolueerd dan alleen dingen groter maken. Begrijpen hoe deze tools werken, helpt je om responsieve ontwerpen te maken die functioneel en aantrekkelijk blijven op elk vergrotingsniveau.
**Moderne browser zoommogelijkheden:**
- **Pagina-zoom**: Schaal alle inhoud proportioneel (tekst, afbeeldingen, lay-out) - dit is de voorkeursmethode
- **Alleen tekst-zoom**: Vergroot de lettergrootte terwijl de oorspronkelijke lay-out behouden blijft
- **Knijp-om-te-zoomen**: Ondersteuning voor mobiele gebaren voor tijdelijke vergroting
- **Browserondersteuning**: Alle moderne browsers ondersteunen zoom tot 500% zonder functionaliteit te breken
**Gespecialiseerde vergrotingssoftware:**
- **Windows**: [Vergrootglas](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (ingebouwd), [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/)
- **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (ingebouwd met geavanceerde functies)
> ⚠️ **Ontwerpoverweging**: WCAG vereist dat inhoud functioneel blijft bij 200% zoom. Op dit niveau moet horizontaal scrollen minimaal zijn en moeten alle interactieve elementen toegankelijk blijven.
✅ **Test je responsieve ontwerp**: Zoom je browser in tot 200% en 400%. Past je lay-out zich soepel aan? Kun je nog steeds alle functionaliteit bereiken zonder overmatig te scrollen?
## Moderne toegankelijkheidstesttools
Nu je begrijpt hoe mensen met hulpmiddelen voor toegankelijkheid het web navigeren, laten we de tools verkennen die je helpen toegankelijke websites te bouwen en te testen.
Zie het zo: geautomatiseerde tools zijn geweldig in het opsporen van duidelijke problemen (zoals ontbrekende alt-tekst), terwijl handmatig testen je helpt ervoor te zorgen dat je site prettig aanvoelt in de echte wereld. Samen geven ze je het vertrouwen dat je sites voor iedereen werken.
### Kleurcontrast testen
Goed nieuws: kleurcontrast is een van de meest voorkomende toegankelijkheidsproblemen, maar het is ook een van de gemakkelijkste om op te lossen. Goed contrast is gunstig voor iedereen—van gebruikers met een visuele beperking tot mensen die hun telefoon proberen te lezen op het strand.
**WCAG contrastvereisten:**
| Teksttype | WCAG AA (Minimum) | WCAG AAA (Verbeterd) |
|-----------|-------------------|---------------------|
| **Normale tekst** (onder 18pt) | 4.5:1 contrastverhouding | 7:1 contrastverhouding |
| **Grote tekst** (18pt+ of 14pt+ vetgedrukt) | 3:1 contrastverhouding | 4.5:1 contrastverhouding |
| **UI-componenten** (knoppen, formulierkaders) | 3:1 contrastverhouding | 3:1 contrastverhouding |
**Essentiële testtools:**
- [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - Desktop-app met kleurkiezer
- [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - Webgebaseerd met directe feedback
- [Stark](https://www.getstark.co/) - Ontwerptool plugin voor Figma, Sketch, Adobe XD
- [Accessible Colors](https://accessible-colors.com/) - Vind toegankelijke kleurenpaletten
✅ **Bouw betere kleurenpaletten**: Begin met je merk kleuren en gebruik contrastcheckers om toegankelijke variaties te creëren. Documenteer deze als toegankelijke kleurentokens in je ontwerp systeem.
### Uitgebreide toegankelijkheidsaudits
De meest effectieve toegankelijkheidstests combineren meerdere benaderingen. Geen enkele tool vangt alles, dus het opbouwen van een testroutine met verschillende methoden zorgt voor een grondige dekking.
**Browsergebaseerde tests (ingebouwd in DevTools):**
- **Chrome/Edge**: Lighthouse toegankelijkheidsaudit + Toegankelijkheidspaneel
- **Firefox**: Toegankelijkheidsinspecteur met gedetailleerde boomweergave
- **Safari**: Audit-tabblad in Web Inspector met VoiceOver-simulatie
**Professionele testextensies:**
- [axe DevTools](https://www.deque.com/axe/devtools/) - Industriestandaard geautomatiseerde tests
- [WAVE](https://wave.webaim.org/extension/) - Visuele feedback met foutmarkering
- [Accessibility Insights](https://accessibilityinsights.io/) - Microsoft's uitgebreide testpakket
**Command-line en CI/CD-integratie:**
- [axe-core](https://github.com/dequelabs/axe-core) - JavaScript-bibliotheek voor geautomatiseerde tests
- [Pa11y](https://pa11y.org/) - Command-line toegankelijkheidstesttool
- [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - Geautomatiseerde toegankelijkheidsscores
> 🎯 **Testdoel**: Streef naar een Lighthouse toegankelijkheidsscore van 95+ als basis. Onthoud dat geautomatiseerde tools slechts ongeveer 30-40% van de toegankelijkheidsproblemen detecteren—handmatig testen blijft essentieel!
## Toegankelijkheid vanaf de basis opbouwen
De sleutel tot succes in toegankelijkheid is om het vanaf dag één in je basis op te nemen. Ik weet dat het verleidelijk is om te denken "Ik voeg toegankelijkheid later toe," maar dat is alsof je probeert een oprit aan een huis toe te voegen nadat het al is gebouwd. Mogelijk? Ja. Makkelijk? Niet echt.
Denk aan toegankelijkheid als het plannen van een huis—het is veel eenvoudiger om rolstoeltoegankelijkheid in je oorspronkelijke architectonische plannen op te nemen dan om alles later aan te passen.
### De POUR-principes: De basis van toegankelijkheid
De Web Content Accessibility Guidelines (WCAG) zijn opgebouwd rond vier fundamentele principes die samen het acroniem POUR vormen. Maak je geen zorgen—dit zijn geen saaie academische concepten! Het zijn eigenlijk praktische richtlijnen om inhoud te maken die voor iedereen werkt.
Zodra je de POUR-principes begrijpt, wordt het maken van toegankelijkheidsbeslissingen veel intuïtiever. Het is alsof je een mentale checklist hebt die je ontwerpkeuzes begeleidt. Laten we het opsplitsen:
**🔍 Waarneembaar**: Informatie moet op een manier worden gepresenteerd die gebruikers kunnen waarnemen via hun beschikbare zintuigen
- Bied tekstalternatieven voor niet-tekstuele inhoud (afbeeldingen, video's, audio)
- Zorg voor voldoende kleurcontrast voor alle tekst en UI-componenten
- Bied ondertiteling en transcripties voor multimedia-inhoud
- Ontwerp inhoud die functioneel blijft bij een vergroting tot 200%
- Gebruik meerdere zintuiglijke kenmerken (niet alleen kleur) om informatie over te brengen
**🎮 Bedienbaar**: Alle interfacecomponenten moeten bedienbaar zijn via beschikbare invoermethoden
- Maak alle functionaliteit toegankelijk via toetsenbordnavigatie
- Geef gebruikers voldoende tijd om inhoud te lezen en ermee te interactie te gaan
- Vermijd inhoud die aanvallen of vestibulaire stoornissen veroorzaakt
- Help gebruikers efficiënt te navigeren met duidelijke structuur en herkenningspunten
- Zorg ervoor dat interactieve elementen voldoende doelgrootte hebben (minimaal 44px)
**📖 Begrijpelijk**: Informatie en bediening van de gebruikersinterface moeten duidelijk en begrijpelijk zijn
- Gebruik duidelijke, eenvoudige taal die geschikt is voor je doelgroep
- Zorg ervoor dat inhoud op voorspelbare en consistente manieren verschijnt en werkt
- Bied duidelijke instructies en foutmeldingen voor gebruikersinvoer
- Help gebruikers fouten in formulieren te begrijpen en te corrigeren
- Organiseer inhoud met een logische leesvolgorde en informatieve hiërarchie
**💪 Robuust**: Inhoud moet betrouwbaar werken op verschillende technologieën en hulpmiddelen
- Gebruik geldige, semantische HTML als basis
- Zorg voor compatibiliteit met huidige en toekomstige hulpmiddelen
- Volg webstandaarden en best practices voor opmaak
- Test op verschillende browsers, apparaten en hulpmiddelen
- Structureer inhoud zodat deze goed functioneert, zelfs als geavanceerde functies niet worden ondersteund
## Toegankelijke visuele ontwerpen maken
Goed visueel ontwerp en toegankelijkheid gaan hand in hand. Wanneer je ontwerpt met toegankelijkheid in gedachten, ontdek je vaak dat deze beperkingen leiden tot schonere, elegantere oplossingen die alle gebruikers ten goede komen.
Laten we onderzoeken hoe je visueel aantrekkelijke ontwerpen kunt maken die werken voor iedereen, ongeacht hun visuele mogelijkheden of de omstandigheden waarin ze je inhoud bekijken.
### Kleur- en visuele toegankelijkheidsstrategieën
Kleur is een krachtig communicatiemiddel, maar het mag nooit de enige manier zijn om belangrijke informatie over te brengen. Ontwerpen voorbij kleur zorgt voor robuustere, inclusieve ervaringen die in meer situaties werken.
**Ontwerp voor verschillen in kleurenzicht:**
Ongeveer 8% van de mannen en 0,5% van de vrouwen heeft een vorm van kleurenzichtverschil (vaak "kleurenblindheid" genoemd). De meest voorkomende typen zijn:
- **Deuteranopie**: Moeite met het onderscheiden van rood en groen
- **Protanopie**: Rood lijkt minder helder
- **Tritanopie**: Moeite met blauw en geel (zeldzaam)
**Inclusieve kleurstrategieën:**
```css
/* ❌ Bad: Using only color to indicate status */
.error { color: red; }
.success { color: green; }
/* ✅ Good: Color plus icons and context */
.error {
color: #d32f2f;
border-left: 4px solid #d32f2f;
}
.error::before {
content: "⚠️";
margin-right: 8px;
}
.success {
color: #2e7d32;
border-left: 4px solid #2e7d32;
}
.success::before {
content: "✅";
margin-right: 8px;
}
```
**Verder dan basisvereisten voor contrast:**
- Test je kleurkeuzes met simulators voor kleurenblindheid
- Gebruik patronen, texturen of vormen naast kleurcodering
- Zorg ervoor dat interactieve staten herkenbaar blijven zonder kleur
- Overweeg hoe je ontwerp eruitziet in modus voor hoog contrast
✅ **Test de toegankelijkheid van je kleuren**: Gebruik tools zoals [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) om te zien hoe je site eruitziet voor gebruikers met verschillende soorten kleurenzicht.
### Focusindicatoren en interactieontwerp
Focusindicatoren zijn het digitale equivalent van een cursor—ze laten toetsenbordgebruikers zien waar ze zich op de pagina bevinden. Goed ontworpen focusindicatoren verbeteren de ervaring voor iedereen door interacties duidelijk en voorspelbaar te maken.
**Moderne best practices voor focusindicatoren:**
```css
/* Enhanced focus styles that work across browsers */
button:focus-visible {
outline: 2px solid #0066cc;
outline-offset: 2px;
box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25);
}
/* Remove focus outline for mouse users, preserve for keyboard users */
button:focus:not(:focus-visible) {
outline: none;
}
/* Focus-within for complex components */
.card:focus-within {
box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5);
border-color: #4A90A4;
}
/* Ensure focus indicators meet contrast requirements */
.custom-focus:focus-visible {
outline: 3px solid #ffffff;
outline-offset: 2px;
box-shadow: 0 0 0 6px #000000;
}
```
**Vereisten voor focusindicatoren:**
- **Zichtbaarheid**: Moet een contrastverhouding van minimaal 3:1 hebben met omliggende elementen
- **Breedte**: Minimaal 2px dikte rondom het hele element
- **Blijvend zichtbaar**: Moet zichtbaar blijven totdat de focus elders naartoe gaat
- **Onderscheidend**: Moet visueel verschillen van andere UI-staten
> 💡 **Ontwerptip**: Goede focusindicatoren gebruiken vaak een combinatie van outline, box-shadow en kleurveranderingen om zichtbaarheid te garanderen op verschillende achtergronden en in verschillende contexten.
✅ **Controleer focusindicatoren**: Navigeer met de Tab-toets door je website en noteer welke elementen duidelijke focusindicatoren hebben. Zijn er elementen die moeilijk te zien zijn of helemaal ontbreken?
### Semantische HTML: De basis van toegankelijkheid
Semantische HTML is als het geven van een GPS-systeem aan hulpmiddelen voor toegankelijkheid op je website. Door de juiste HTML-elementen te gebruiken voor hun beoogde doel, geef je schermlezers, toetsenborden en andere tools een gedetailleerde routekaart om gebruikers effectief te helpen navigeren.
Hier is een analogie die echt bij mij is blijven hangen: semantische HTML is het verschil tussen een goed georganiseerde bibliotheek met duidelijke categorieën en behulpzame bordjes versus een magazijn waar boeken willekeurig verspreid liggen. Beide plekken hebben dezelfde boeken, maar waar zou jij liever iets proberen te vinden? Precies!
**Bouwstenen van een toegankelijke paginavormgeving:**
```html
Your Site Name
Article Title
Published on
First Section
Content that relates to this section...
Second Section
More related content...
```
**Waarom semantische HTML toegankelijkheid transformeert:**
| Semantisch element | Doel | Voordeel voor schermlezers |
|--------------------|------|---------------------------|
| `` | Koptekst van pagina of sectie | "Banner landmark" - snelle navigatie naar boven |
| `