Typ iets om te zoeken...

Wcag uitgelegd

Klikbare div in plaats van een button

Klikbare div in plaats van een button: WCAG 2.1.1 Toetsenbord (post 1/9)

Een div met een onclick. Ziet eruit als een knop. Doet iets als je erop klikt.

Maar druk op Tab. Niets. De div krijgt geen focus. Druk op Enter. Niets. De div reageert niet op het toetsenbord.

Voor een muisgebruiker: een knop. Voor een toetsenbordgebruiker: onzichtbaar.

Dit is de meest voorkomende toetsenbordfout die ik tegenkom bij audits. En het is zo makkelijk te voorkomen.

<!-- Niet doen -->
<div class="knop" onclick="verstuur()">Versturen</div>

<!-- Wel doen -->
<button type="button" onclick="verstuur()">Versturen</button>

Een <button> is standaard focusbaar, activeerbaar met Enter en Spatie, en heeft de juiste rol voor schermlezers. Gratis. Zonder extra code.

“Maar ik kan toch tabindex en een keydown-handler toevoegen?”

Ja. En role=“button”. En aria-pressed. En de juiste styling voor :focus-visible. En testen of Enter en Spatie allebei werken. Of je gebruikt gewoon <button>.

De vuistregel:

  • Doet het iets op de pagina? -> <button>
  • Gaat het ergens naartoe? -> <a href="...">
  • Nooit een <div> of <span> voor interactie

Related Posts

Metadata boven de kop van een artikel

Metadata boven de kop van een artikel

“15 maart 2026. Workshops.” Dat hoort een schermlezergebruiker. En dan: stilte. Want het volgende element is de kop van het artikel eronder.

overflow: hidden knipt de focusindicator af

overflow: hidden knipt de focusindicator af

Een mooie kaartcomponent. Afgeronde hoeken. overflow: hidden om te voorkomen dat content buiten de hoeken valt.

Elementen met een vaste breedte

Elementen met een vaste breedte

Je zoomt in tot 400%. De tekst wordt groter, de pagina smaller.