Wcag uitgelegd

Knop met icoon en tekst, maar aria-label vervangt alles

Knop met icoon en tekst, maar aria-label vervangt alles — WCAG 2.5.3 Label in naam (post 3/7)

Een knop. Disketje-icoon. Daarnaast: “Opslaan.”

De developer dacht: laat ik een uitgebreider aria-label toevoegen. “Sla het huidige document op naar de server.”

Het resultaat: de zichtbare tekst “Opslaan” is niet meer onderdeel van de toegankelijke naam. Spraakbesturing: “Klik op Opslaan.” Geen match.

<!-- Niet doen: aria-label vervangt de zichtbare tekst -->
<button aria-label="Sla het huidige document op naar de server">
  <svg aria-hidden="true"><!-- disketje --></svg>
  Opslaan
</button>

<!-- Wel doen: geen aria-label nodig -->
<button>
  <svg aria-hidden="true"><!-- disketje --></svg>
  Opslaan
</button>

De gouden regel: als je knop al zichtbare tekst heeft, heb je geen aria-label nodig.

Een aria-label overschrijft alles. De zichtbare tekst, de alt-tekst van afbeeldingen erin, alles. Zodra je een aria-label toevoegt, is dat de enige naam die schermlezers en spraakbesturing gebruiken.

Wanneer heb je wél een aria-label nodig? Alleen als het element geen zichtbare tekst heeft. Een knop met alleen een icoon. Een link met alleen een afbeelding. Dan is aria-label de juiste oplossing.

Related Posts

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.

aria-labelledby verwijst naar de verkeerde tekst

aria-labelledby verwijst naar de verkeerde tekst

Een invoerveld. Zichtbaar label: “E-mailadres.” Maar aria-labelledby verwijst naar een verborgen element met: “Voer uw elektronische postadres in.”

Tekst afgesneden door een vaste hoogte

Tekst afgesneden door een vaste hoogte

Een banner van 200 pixels hoog. Past precies. Mooie headline, korte tekst, call-to-action.