Typ iets om te zoeken...

Wcag uitgelegd

aria-label op een div: wordt genegeerd

aria-label op een div: wordt genegeerd — WCAG 4.1.2 Naam, rol, waarde (post 5/12)

Een developer wil een sectie een naam geven voor schermlezers. Plakt aria-label="Zoekresultaten" op een <div>.

De schermlezer negeert het. Want een <div> zonder rol heeft de impliciete rol “generic.” En op generieke elementen mag je geen aria-label gebruiken.

<!-- Niet doen: aria-label op een div zonder rol -->
<div aria-label="Zoekresultaten">
  <p>3 resultaten gevonden</p>
</div>

<!-- Wel doen: voeg een rol toe -->
<div role="region" aria-label="Zoekresultaten">
  <p>3 resultaten gevonden</p>
</div>

<!-- Of: gebruik een semantisch element -->
<section aria-label="Zoekresultaten">
  <p>3 resultaten gevonden</p>
</section>

De logica: een <div> is een container zonder betekenis. Het zou vreemd zijn als een schermlezer bij elke div een label zou aankondigen. Daarom worden labels op generieke elementen genegeerd.

Maar een <section> of een <div role="region"> is een landmark — een herkenbaar gebied op de pagina. Daar hoort een label bij.

Dit geldt ook voor <span>: geen aria-label op een span zonder rol.

Zelf verder met dit onderwerp

Related Posts

Link naar een PDF zonder het te zeggen

Link naar een PDF zonder het te zeggen

“Algemene voorwaarden.” Je klikt. En ineens opent er een PDF in je browser. Of er start een download. Of je telefoon opent een PDF-viewer.

aria-expandd (met twee d's)

aria-expandd (met twee d's)

Een menuknop. aria-expanded om aan te geven of het menu open is. Maar de developer typte aria-expandd. Met twee d’s.

Single-page app die de titel niet bijwerkt

Single-page app die de titel niet bijwerkt

Je navigeert van de homepage naar de contactpagina. De content verandert. De URL verandert. Het tabblad? Staat nog steeds “Home - Webshop.”