aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Frontend & UI

Webtoegankelijkheid: toetsenbord, ARIA en contrast

Webtoegankelijkheid betekent een interface bouwen die mensen met visuele, auditieve, motorische of cognitieve verschillen zonder wrijving kunnen gebruiken. Veel ontwikkelaars zien het als een juridisch vinkje of een “extra” die je aan het eind toevoegt. In werkelijkheid is toegankelijkheid een kernpraktijk die — goed aangepakt vanaf het begin — ook je codekwaliteit, SEO en algehele bruikbaarheid verbetert. Deze gids richt zich op de drie gebieden die het meeste verschil maken: toetsenbordnavigatie, correct gebruik van ARIA en kleurcontrast.

Waarom toegankelijkheid een basis is, geen bonus

Een aanzienlijk deel van de bevolking leeft met een blijvende of tijdelijke beperking, maar toegankelijkheid is niet alleen voor hen. Een scherm dat in de zon schittert, een kapotte muis, een gedempte video, vermoeide ogen — iedereen surft soms in een “beperkte” context. Een toegankelijke site helpt gebruikers van schermlezers en toetsenbord en geeft zoekmachines tegelijk een betekenisvollere structuur.

  • Semantische HTML doet ongeveer 80% van het werk: de juiste tag doet de juiste taak.
  • WCAG (Web Content Accessibility Guidelines) geeft je een meetbaar doel; de meeste organisaties nemen niveau AA als referentie.
  • Toegankelijke code is meestal robuuster en makkelijker te onderhouden.

Semantische HTML: het fundament van toegankelijkheid

De meest gemaakte fout is alles bouwen met <div> en <span>. De browser weet niet dat een <div> klikbaar is, en een schermlezer kondigt het niet aan. Het juiste element gebruiken geeft je toetsenbordgedrag, focusbeheer en schermlezer-aankondigingen gratis.

<!-- Slecht: toegankelijkheid moet handmatig -->
<div class="btn" onclick="opslaan()">Opslaan</div>

<!-- Goed: toetsenbord, focus en rol zitten erin -->
<button type="button" onclick="opslaan()">Opslaan</button>

Dezelfde logica geldt voor <nav>, <main>, <header>, <footer> en formuliervelden. Elke <input> moet aan een <label> gekoppeld zijn:

<label for="email">E-mail</label>
<input id="email" type="email" name="email">

Toetsenbordnavigatie: het moet werken zonder muis

Een interface met het toetsenbord testen is de snelste toegankelijkheidscheck die er is. Ga vooruit met Tab en terug met Shift+Tab: bereik je elke link, knop en elk formulierveld? Is de focus zichtbaar?

  • Verwijder de focusring nooit met outline: none. Als hij botst met je ontwerp, geef hem dan een nette stijl met :focus-visible.
  • Gebruik de DOM-volgorde voor een logische reeks en vermijd positieve tabindex-waarden. Alleen tabindex="0" (opnemen in de volgorde) en tabindex="-1" (programmatische focus) zijn nodig.
  • Als een modaal venster opent, houd de focus erin gevangen en geef hem terug aan de activerende knop bij het sluiten.
/* Een duidelijke focusring, alleen voor toetsenbordgebruikers */
:focus-visible {
  outline: 2px solid #4f46e5;
  outline-offset: 2px;
}

Een skip-link is ook een grote hulp voor toetsenbordgebruikers:

<a class="skip-link" href="#main">Naar de inhoud</a>
...
<main id="main"> ... </main>

ARIA: minder is meer

ARIA (Accessible Rich Internet Applications) bestaat om toestanden aan schermlezers door te geven die HTML alleen niet kan uitdrukken. Maar de gouden regel is duidelijk: geen ARIA is beter dan slechte ARIA. Een verkeerde role of een verkeerde toestand breekt verder correcte semantische HTML.

  • Als een native HTML-element het werk doet, voeg dan geen ARIA toe: role="button" op een <button> is overbodig.
  • Geef icoonknoppen zonder tekst een toegankelijke naam: aria-label="Menu openen".
  • Kondig de toestand aan: aria-expanded="true/false" op een dropdown, aria-selected op het actieve tabblad.
  • Kondig live-updates aan met aria-live="polite" (bijvoorbeeld een foutmelding in een formulier).
<button aria-label="Menu openen" aria-expanded="false" aria-controls="menu">
  <svg aria-hidden="true"> ... </svg>
</button>
<ul id="menu" hidden> ... </ul>

Voor puur decoratieve afbeeldingen laat je alt="" staan of gebruik je aria-hidden="true" zodat schermlezers ze overslaan. Voor betekenisvolle afbeeldingen is een beschrijvende alt-tekst essentieel.

Kleur en contrast: leesbaarheid voor iedereen

Laag contrast is het meest voorkomende en gemakkelijkst op te lossen toegankelijkheidsprobleem. WCAG-niveau AA vereist een contrastratio van minstens 4,5:1 voor normale tekst en 3:1 voor grote tekst (18,66px vet of 24px). UI-componenten en grafische elementen mikken ook op 3:1.

  • De DevTools van je browser tonen de contrastratio en de AA/AAA-status als je tekst selecteert.
  • Breng informatie nooit over met kleur alleen. In plaats van “het rode veld is ongeldig” voeg je een icoon, tekst of patroon toe — cruciaal voor kleurenblinde gebruikers.
  • Onderscheid links met een tweede aanwijzing, zoals een onderstreping of vette weergave, niet alleen met kleur.
  • Beperk animaties voor bewegingsgevoelige gebruikers met prefers-reduced-motion.
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

Testen: tools en mensen samen

Geautomatiseerde tools vangen maar een deel van de problemen; de rest vraagt echte ervaring.

  • Doe een snelle scan met Lighthouse of axe DevTools.
  • Navigeer de hele pagina met het toetsenbord: raak je ergens vast?
  • Probeer een schermlezer: VoiceOver op macOS en NVDA op Windows zijn gratis.
  • Zoom de pagina naar 200%; stroomt de inhoud zonder te breken?

Veelgestelde vragen

Moet ik WCAG AA of AAA nastreven?

Voor de meeste projecten is niveau AA het praktische en breed geaccepteerde doel, en veel wettelijke kaders verwijzen er ook naar. AAA is op sommige criteria erg streng en niet realistisch voor elk stuk inhoud, maar het is mooi om het toe te passen waar het kan.

Kan ARIA semantische HTML vervangen?

Nee. ARIA verrijkt alleen de betekenis waar HTML tekortschiet; het voegt geen gedrag toe. Zelfs als je een <div> een role="button" geeft, moet je nog steeds zelf de toetsenbordgebeurtenissen en de focus regelen. Het juiste element is altijd veiliger.

Helpt toegankelijkheid SEO?

Ja. Semantische structuur, alt-teksten, een logische koppenhiërarchie en duidelijk leesbare inhoud geven dezelfde helderheid aan schermlezers en zoekmachines; de twee overlappen sterk.

Een toegankelijke interface is gewoon een betere interface. Wil je je site laten doorlichten op toetsenbord, ARIA en contrast, of hem vanaf het begin toegankelijk bouwen, neem dan contact met me op.

Bu kategorideki tüm yazılar →

Devamı için