Typ iets om te zoeken...

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.

Zelf verder met dit onderwerp

Related Posts

Hele alinea als link

Hele alinea als link

“Link. Deze prachtige winterjas is gemaakt van gerecycled materiaal en houdt je warm tot min 20 graden. Verkrijgbaar in drie kleuren. Nu met 20 procent korting.”

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

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

Een knop. Disketje-icoon. Daarnaast: “Opslaan.” De developer dacht: laat ik een uitgebreider aria-label toevoegen. “Sla het huidige document op naar de server.”

Custom component waarvan de focus is vergeten

Custom component waarvan de focus is vergeten

Een zelfgebouwde tabcomponent. Mooie styling. Hover-effecten. Transities. Tab ernaartoe. Geen focusindicator. De developer heeft border: none en outline: none in de component-CSS gezet om de standaardstyling te verwijderen. En is vergeten een :focus-visible toe te voegen.