Wcag uitgelegd

Custom dropdown die niet met toetsen werkt

Custom dropdown die niet met toetsen werkt — WCAG 2.1.1 Toetsenbord (post 3/9)

Een prachtig gestylede dropdown. Hover erop: de opties verschijnen. Klik op een optie: geselecteerd.

Tab ernaartoe. Druk op Enter. Niets. Druk op Spatie. Niets. Pijltje omlaag. Niets.

De dropdown is een compleet eigen bouwwerk van divs, spans en onclick-handlers. Mooi. Maar onbruikbaar zonder muis.

Een native <select>-element doet alles wat je nodig hebt:

  • Focusbaar met Tab
  • Openen met Enter, Spatie of pijltje omlaag
  • Navigeren met pijltjestoetsen
  • Sluiten met Escape
  • Werkt met schermlezers
<!-- Niet doen: custom dropdown zonder toetsenbord -->
<div class="dropdown" onclick="toggleMenu()">
  <span>Kies een optie</span>
  <ul style="display:none;">
    <li onclick="selecteer('a')">Optie A</li>
    <li onclick="selecteer('b')">Optie B</li>
  </ul>
</div>

<!-- Wel doen: native element -->
<label for="keuze">Kies een optie</label>
<select id="keuze">
  <option value="a">Optie A</option>
  <option value="b">Optie B</option>
</select>

“Maar het native element is lelijk.”

In 2026? Niet meer. Moderne browsers stijlen <select> behoorlijk. En met appearance: none en wat CSS kun je het bijna alles laten doen.

Wil je toch custom? Dan moet je het ARIA-combobox-patroon volgen. Dat is dagen werk. En het moet in elke browser en met elke schermlezer werken. Weet je zeker dat je dat wilt?

Related Posts

Klikbare div in plaats van een button

Klikbare div in plaats van een button

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

Actieve link in het menu met onzichtbare indicator

Actieve link in het menu met onzichtbare indicator

Je bent op de pagina “Over ons”. In het menu is die link anders dan de rest. Een subtiele onderstreping. Lichtblauw. #8AB4F8.

JavaScript dat de focus actief verwijdert

JavaScript dat de focus actief verwijdert

element.addEventListener("focus", function() { this.blur(); }); Een element krijgt focus. JavaScript verwijdert de focus direct. Het element heeft een fractie van een seconde focus gehad. De gebruiker merkt niets.