Beschriftung im Namen: Warum sichtbares Label und zugänglicher Name zusammengehören
Jedes Steuerelement hat zwei Beschriftungen: das sichtbare Label, das alle lesen, und den zugänglichen Namen, den Software ausliest. Wer per Sprache steuert, sagt „Klick Senden" und trifft den Button nur, wenn beide übereinstimmen. Das Erfolgskriterium 2.5.3 „Beschriftung im Namen"(englisch „Label in Name", Stufe A) verlangt genau das: Der zugängliche Name muss den sichtbaren Text enthalten. Diese Seite zeigt, warum das so wichtig ist und wo der häufigste Fehler steckt.
Label und Name: zwei Dinge, ein Steuerelement
Auf dem Bildschirm siehst du bei einem Button das Wort „Senden". Das ist das sichtbare Label. Daneben trägt derselbe Button einen zugänglichen Namen(englisch accessible name ), den Hilfstechnologien auslesen. In den meisten Fällen sind beide gleich, sie müssen es aber nicht sein, und genau da entsteht das Problem.
Wer eine Spracherkennung nutzt, navigiert über das, was sichtbar ist. Der Befehl lautet „Klick Senden". Die Software vergleicht das gesprochene Wort mit dem zugänglichen Namen des Buttons. Stimmt der Name nicht mit dem sichtbaren Label überein, schlägt der Befehl fehl, obwohl die Person genau das gesagt hat, was auf dem Button steht. Auch Screenreader-Nutzer:innen profitieren: Was sie hören, sollte zu dem passen, was daneben sitzende Sehende vorlesen.
Was das Kriterium verlangt
Der Wortlaut ist kompakt: Bei Steuerelementen mit einer Beschriftung, die Text oder Bilder von Text enthält, muss der Name den visuell dargestellten Text enthalten. „Enthalten" heißt: Der sichtbare Text muss im zugänglichen Namen vorkommen, am besten wortgleich und in derselben Reihenfolge. Als beste Praxis empfiehlt das W3C, dass der zugängliche Name mit dem sichtbaren Label beginnt.
Ein Sonderfall ist wichtig: Fehlt einem Steuerelement der zugängliche Name komplett, obwohl ein sichtbares Textlabel da ist, verstößt es gleichzeitig gegen 2.5.3 und gegen 4.1.2 „Name, Rolle, Wert". Ohne Namen gibt es nichts, das den sichtbaren Text enthalten könnte.
Wie der zugängliche Name entsteht
Der zugängliche Name wird nicht willkürlich gewählt, sondern nach der Accessible Name and Description Computation
berechnet,
einer eigenen W3C-Spezifikation. Sie legt fest, welche Quellen in
welcher Reihenfolge zählen. Sobald eine höher priorisierte Quelle
einen Namen liefert, werden die darunterliegenden ignoriert. Das ist
der Grund, warum ein aria-label
ein sichtbares Label
verdecken kann.
| Priorität | Quelle | Wirkung auf 2.5.3 |
|---|---|---|
| Hoch | aria-labelledby
|
Überschreibt alles. Verweist es auf das sichtbare Label, ist alles gut, sonst riskant. |
| Hoch | aria-label
|
Überschreibt das sichtbare Label. Hauptursache für Abweichungen, mit Vorsicht einsetzen. |
| Mittel | Verknüpftes <label>
oder Button-Text |
Der Normalfall. Sichtbarer Text wird automatisch zum Namen, Label und Name stimmen überein. |
| Niedrig | title
, Platzhalter |
Nur als Notnagel. Platzhalter ersetzt kein echtes Label. |
Ein Detail mit großer Wirkung: aria-describedby
fließt nicht
in den Namen ein, sondern in die Beschreibung.
Kontext wie Hilfetexte, Überschriften oder Gruppen-Beschriftungen
gehören also in die Beschreibung, nicht in den Namen. So bekommen
Screenreader-Nutzer:innen die Zusatzinfo, ohne dass der Name für
Sprachnutzer:innen unbrauchbar wird.
Die häufigste Falle: aria-label
Der mit Abstand häufigste Verstoß, dokumentiert als Fehler F96, entsteht aus guter Absicht: Ein Team will den
Namen „aussagekräftiger" machen und hängt ein aria-label
an, das vom sichtbaren Text abweicht. Damit ist das sichtbare Label
für die Sprachsteuerung verschwunden.
buttons.html · Verstoß und Korrektur
<!-- ✕ Verstoß (F96): Name enthält das Label „Senden" nicht --> <button aria-label="Formular absenden">Senden</button> <!-- ✓ Ideal: kein aria-label nötig, Text ist der Name --> <button>Senden</button> <!-- ✓ Erlaubt: Name beginnt mit dem sichtbaren Label --> <button aria-label="Senden und zur Übersicht">Senden</button>
Die offiziellen ausreichenden Techniken des W3C heißen G208(den Text des sichtbaren Labels in den Namen aufnehmen) und G211(den Namen an das sichtbare Label angleichen). Beide laufen auf dieselbe Faustregel hinaus: Wenn ein sichtbares Label existiert, lass den nativen Mechanismus arbeiten und übersteuere ihn nur dann mit ARIA, wenn du den sichtbaren Text vollständig übernimmst.
Sonderfälle: Symbole, Satzzeichen, Klammern
Nicht jeder sichtbare Buchstabe ist ein Label im Sinn dieses Kriteriums. Entscheidend ist, ob der Text etwas in menschlicher Sprache ausdrückt. Die wichtigsten Sonderfälle:
| Fall | Sichtbar | Sinnvoller Name |
|---|---|---|
| Symbolische Zeichen | Icons mit „B", „I" für Fett und Kursiv | Die Funktion benennen, etwa „Fett" oder „Kursiv", nicht den Buchstaben. |
| Satzzeichen und Großschreibung | „Vorname:" oder „Weiter…" | „Vorname" beziehungsweise „Weiter" genügen. Doppelpunkt und Auslassungspunkte sind optional. |
| Text in Klammern | „Name (erforderlich)" | „Name" reicht als Name. Den Pflicht-Status aber separat programmatisch ausgeben (1.3.1). |
| Mathematische Ausdrücke | „11×3=33" oder „A>B" | Wortgleich übernehmen. Hier tragen die Symbole Bedeutung, nicht ausschreiben. |
Ein Mythos
„Ein aria-label macht einen Button immer barrierefreier."
Oft das Gegenteil. Ein aria-label
überschreibt den
sichtbaren Text als zugänglichen Namen. Weicht es vom Label ab,
können Sprachnutzer:innen den Button nicht mehr per sichtbarem Text
ansprechen, und Screenreader-Nutzer:innen hören etwas anderes, als
daneben steht. Bei vorhandenem sichtbaren Label ist der beste Name
meist gar kein zusätzliches ARIA: Der sichtbare
Text wird automatisch zum Namen. ARIA-Namen sind ein Werkzeug für
Sonderfälle, kein Standard-Reflex.
Auf einen Blick
So prüfst du ein Steuerelement schnell gegen 2.5.3:
Den Namen liest du am einfachsten mit dem Accessibility-Inspector des Browsers oder eines Screenreaders aus. Den genauen Berechnungsweg beschreibt die Accessible-Name-Spezifikation des W3C.
Passen sichtbare Labels und zugängliche Namen zusammen?
Wir prüfen deine Formulare und Steuerelemente auf saubere
Beschriftung, Sprachbedienbarkeit und WCAG-2.2-Konformität und zeigen
deinem Team, wie es die aria-label
-Falle von vornherein
vermeidet.
