Wcag uitgelegd

CSS voegt tekst toe die niet in de naam zit

CSS voegt tekst toe die niet in de naam zit — WCAG 2.5.3 Label in naam (post 6/7)

Een knop. In de HTML staat “Verwijderen.” Maar de CSS voegt via ::after het woord “definitief” toe.

De gebruiker ziet: “Verwijderen definitief.” De toegankelijke naam: “Verwijderen.” Spraakbesturing: “Klik op Verwijderen definitief.” Geen match.

/* Problematisch: CSS voegt zichtbare tekst toe */
.knop-verwijderen::after {
  content: " definitief";
}
<!-- De gebruiker ziet "Verwijderen definitief" -->
<!-- De toegankelijke naam is alleen "Verwijderen" -->
<button class="knop-verwijderen">Verwijderen</button>

<!-- Beter: alle tekst in de HTML -->
<button>Verwijderen definitief</button>

Waarom is dit een probleem?

CSS-gegenereerde content (::before en ::after) wordt niet altijd meegenomen in de berekening van de toegankelijke naam. Het gedrag verschilt per browser en schermlezer. Je kunt er niet op vertrouwen.

De vuistregel: tekst die informatie geeft, hoort in de HTML. CSS is voor styling, niet voor content.

Decoratieve tekens via CSS (een pijltje, een bullet) zijn prima. Maar woorden die de betekenis veranderen? Die horen in de HTML.

Related Posts

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.”

Carrousel die alleen met klikken werkt

Carrousel die alleen met klikken werkt

Pijltje links. Pijltje rechts. Klikken om door de slides te bladeren.

Foutmelding en zoekresultaat ontbreken in de titel

Foutmelding en zoekresultaat ontbreken in de titel

Je vult een formulier in. Twee velden fout. Je drukt op Versturen. De pagina herlaadt.