Die Geschichte: Warum ARIA erfunden wurde
Anfang der 2000er Jahre veränderte sich das Internet grundlegend. Aus statischen HTML-Seiten wurden Rich Internet Applications (RIA) – moderne, interaktive Websites, die sich wie echte Programme verhalten. Der Zoom auf Google Maps, die komplexen Formulare im Online-Banking oder interaktive Komponenten wie Accordions (ausklappbare Bereiche) und Tabs (Registerkarten).
Diese neuen, interaktiven Websites machten zwar vieles möglich, doch nicht für alle: Screenreader konnten die neuen Seiten nicht verstehen, Menschen mit Sehbeeinträchtigungen diese nicht nutzen.
Das Problem der unsichtbaren Interaktivität
Traditionelle HTML-Elemente wie <button> oder <input> waren für assistive Technologien klar verständlich. Aber was passiert, wenn Entwickler:innen mit JavaScript komplexe Widgets bauen?
Das Problem: Screenreader konnten nicht verstehen, was bei interaktiven Elementen passierte. Wenn ein:e Screenreader-Nutzer:in auf ein selbstgebautes Accordion klickte und es sich öffnete, geschah das nur visuell. Der Screenreader sagte nichts dazu – Personen mit Sehbeeinträchtigungen wussten somit nicht, ob und was sich geändert hatte.
- Früher (statische Websites): Screenreader erkannten alle Elemente problemlos
- Mit Rich Internet Applications: Unsichtbare Buttons, stumme Zustandsänderungen, verwirrende Widgets
Ohne WAI-ARIA konnten Menschen, die auf Screenreader angewiesen waren oder keine Maus bedienen konnten, die Websites nur noch eingeschränkt oder gar nicht mehr nutzen.
Die Lösung: ARIA
Am 20. März 2014 veröffentlichte das World Wide Web Consortium (W3C) den offiziellen Standard WAI-ARIA 1.0. Ein Meilenstein. Endlich gab es eine barrierefreie Lösung für moderne Websites.
So funktioniert ARIA: Der Übersetzer für assistive Technologien
ARIA funktioniert wie ein intelligenter Übersetzer. Es fügt Informationen zum HTML-Code hinzu, die assistive Technologien verstehen und an ihre Nutzer:innen weitergeben können.
Die drei Säulen von ARIA
1. Roles (Rollen): Was ist das für ein Element?
role="button" → “Das ist ein Button”
role="navigation" → “Das ist eine Navigation”
role="dialog" → “Das ist ein Dialog-Fenster”
Properties (Eigenschaften): Wie ist das Element beschaffen?
aria-label="Menü schliessen" → Gibt einem Element einen Namen
aria-describedby="hilfetext" → Verknüpft zusätzliche Beschreibungen
States (Zustände): Was passiert gerade mit dem Element?
aria-expanded="false" → Element ist eingeklappt
aria-checked="true" → Checkbox ist angehakt