Typ iets om te zoeken...

Wcag uitgelegd

Mouseover zonder focus-equivalent

Mouseover zonder focus-equivalent, WCAG 2.1.1 Toetsenbord (post 2/9)

Je hovert over een tekst. Een tooltip verschijnt. Handige extra informatie.

Je navigeert met het toetsenbord naar datzelfde element. Tab. Focus. En… niets. Geen tooltip.

De informatie bestaat alleen voor muisgebruikers.

Dit gaat niet alleen over tooltips. Bijvoorbeeld:

  • Uitklapmenu’s die openen bij hover
  • Extra details die verschijnen als je erover gaat
  • Afbeeldingen die veranderen bij mouseover
  • Previews die alleen bij hover zichtbaar zijn

Het probleem: de developer heeft mouseover en mouseout gebruikt. Maar niet focus en blur.

// Niet doen: alleen muis
element.addEventListener("mouseover", toonTooltip);
element.addEventListener("mouseout", verbergTooltip);

// Wel doen: muis én toetsenbord
element.addEventListener("mouseover", toonTooltip);
element.addEventListener("focus", toonTooltip);
element.addEventListener("mouseout", verbergTooltip);
element.addEventListener("blur", verbergTooltip);

Of in CSS:

/* Niet doen */
.trigger:hover .tooltip { display: block; }

/* Wel doen */
.trigger:hover .tooltip,
.trigger:focus .tooltip,
.trigger:focus-within .tooltip { display: block; }

De check: zoek in je codebase naar mouseover, mouseout, mouseenter, mouseleave en :hover. Heeft elk ervan een toetsenbordequivalent?

Related Posts

Knop die navigeert, link die een actie uitvoert

Knop die navigeert, link die een actie uitvoert

“Contact, knop.” Je drukt op Enter. Een nieuwe pagina opent. Maar het was een knop. Knoppen voeren acties uit. Ze navigeren niet.

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.

outline: none, de meest destructieve regel in CSS

outline: none, de meest destructieve regel in CSS

*:focus { outline: none; } Eén regel. En elke toetsenbordgebruiker op je website navigeert blind.