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

Zelf verder met dit onderwerp

Related Posts

Informatief icoon dat onzichtbaar is

Informatief icoon dat onzichtbaar is

Drie streepjes. Een hamburgericoon. Dat is je menu. Tenminste, als je het kunt zien.

Negatieve outline-offset die de focus verbergt

Negatieve outline-offset die de focus verbergt

Een link met een donkere achtergrond. De focusindicator is er, een zwarte outline van 2 pixels. Maar outline-offset: -4px duwt die outline naar binnen. Onder de achtergrondkleur.

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.