Wann du aria-label, aria-labelledby, aria-describedby oder einfach sichtbaren Text verwendest, mit 20 Vorher-Nachher-Snippets, typischen Fehlern und einem Prüftool für barrierefreie Namen.
Verwende aria-label nur, wenn ein Element keinen sichtbaren Text hat, der es benennt, etwa bei einem reinen Icon-Button: <button aria-label="Close dialog">. Benennt sichtbarer Text das Element bereits, verlass dich darauf oder verweise mit aria-labelledby darauf. aria-describedby ergänzt zusätzliche Hilfe, die nach dem Namen vorgelesen wird. Native HTML-Labels haben immer Vorrang.
Welches Werkzeug du zum Benennen nimmst
Jeder Button, jeder Link, jedes Feld und jede Landmark braucht einen barrierefreien Namen, also die kurze Bezeichnung, die assistive Technologie vorliest, sobald der Fokus dort landet. Diese Seite zeigt, wie dieser Name ermittelt wird, zwanzig fehlerhafte Muster neben ihren reparierten Versionen und ein Prüftool, das ein eingefügtes Snippet liest und meldet, welchen Namen es erhalten würde.
aria-label enthält den Namen als Zeichenkette direkt im Attribut. aria-labelledby verweist auf eine oder mehrere Element-ids und setzt den Namen aus deren Text zusammen, sodass der Name immer dem entspricht, was sehende Nutzer sehen. Sind beide vorhanden, gewinnt aria-labelledby.
Ja. Bei den meisten Bedienelementen überschreibt der Wert von aria-label den Textinhalt, ein Button mit der Aufschrift Buy und aria-label="Add to basket" wird also als Add to basket angesagt. Diese Abweichung verwirrt Nutzer von Sprachsteuerung und verstößt gegen WCAG 2.5.3 Label in Name.
Verwende es für ergänzende Informationen, die nicht der Name sind: eine Passwortregel, einen Formathinweis oder eine Fehlermeldung. Screenreader lesen die Beschreibung meist nach Name und Rolle vor, oft nach einer kurzen Pause, und manche Nutzer schalten Beschreibungen ab.
Nur wenn das div eine Rolle hat, die eine Benennung erlaubt, etwa role="region" oder role="dialog". Auf einem generischen div oder span verbietet ARIA die Benennung, und die meisten Screenreader ignorieren das Attribut.
Nein. Bilder beziehen ihren Namen aus dem alt-Attribut. Verwende alt="" für Dekoration, damit das Bild übersprungen wird. aria-label auf einem img funktioniert zwar, bringt aber nichts, was alt nicht auch kann.
Geh diese Liste von oben nach unten durch und hör bei der ersten passenden Option auf. Sichtbarer Text steht an erster Stelle, weil er sehende Nutzer, Screenreader-Nutzer und Nutzer von Sprachsteuerung mit einer einzigen Zeichenkette bedient.
Die vier Wege, einem Element seinen Namen oder seine Beschreibung zu geben
Jedes Snippet zeigt das fehlerhafte Muster, die Reparatur und ungefähr das, was ein Screenreader nach der Reparatur sagt. Die Ansagen unterscheiden sich je nach Produkt und Einstellungen.
Ohne Namen wird der Button meist nur als Schalter angesagt. Verstecke die Grafik, damit sie nicht als unbeschriftetes Bild vorgelesen wird. Nach dem Fix lautet die Ansage typischerweise: Close, Schalter.
Ein leerer Link wird oft als seine URL vorgelesen, bei manchen Setups Buchstabe für Buchstabe. Nach dem Fix lautet die Ansage typischerweise: Our shop on Instagram, Link.
Echter Text in einem visuell versteckten span übersteht Übersetzungstools, die Attributwerte gern überspringen. Nach dem Fix lautet die Ansage typischerweise: Cart, 3 items, Link.
Bei zwei unbenannten nav-Elementen zeigt die Landmark-Liste zweimal Navigation, und niemand kann sie unterscheiden. Nach dem Fix lautet die Ansage typischerweise: Main, Navigation.
Placeholder-Text ist ein schwacher Ersatzname und verschwindet, sobald jemand tippt. Nach dem Fix lautet die Ansage typischerweise: Search products, Suchfeld.
Ein echtes label-Element macht auch die Beschriftung klickbar und vergrößert so die Zielfläche. Nach dem Fix lautet die Ansage typischerweise: Email, Eingabefeld.
Beschreibungen werden in der Reihenfolge der aufgeführten ids zusammengesetzt. Nach dem Fix lautet die Ansage typischerweise: Password, geschütztes Eingabefeld, ungültige Eingabe, At least 12 characters, Too short....
Die legend benennt die Gruppe, sodass jede Option für sich verständlich ist. Nach dem Fix lautet die Ansage typischerweise: Delivery speed, Gruppe, Standard, Auswahlschalter, 1 von 2.
Der Verweis auf die sichtbare Überschrift hält gesprochenen und angezeigten Titel identisch. Öffne ihn mit showModal() für ein echtes Modal. Nach dem Fix lautet die Ansage typischerweise: Delete project?, Dialog, This removes all 14 pages..
Lass den Namen gleich und nur den Zustand wechseln. Tausche das Label nicht zusätzlich gegen Unbold aus. Nach dem Fix lautet die Ansage typischerweise: Bold, Umschalter, gedrückt.
Label und gedrückten Zustand gleichzeitig zu ändern, klingt wie eine doppelte Verneinung. Nach dem Fix lautet die Ansage typischerweise: Mute, Umschalter, nicht gedrückt.
Das Skript muss aria-expanded und das hidden-Attribut gemeinsam umschalten. Nach dem Fix lautet die Ansage typischerweise: Products, Schalter, reduziert.
Ein klickbares div ist weder fokussierbar noch wird es überhaupt als Bedienelement angesagt. Nach dem Fix lautet die Ansage typischerweise: Menu, Schalter, reduziert.
Schreib, was das Bild dem Leser mitteilt. Ein leeres alt kennzeichnet Dekoration, damit sie übersprungen wird. Nach dem Fix lautet die Ansage typischerweise: Sales rose from 40 to 65 orders a week in May, Grafik.
role=img macht das SVG zu einem einzigen Objekt statt zu einem Baum aus Formen. Nach dem Fix lautet die Ansage typischerweise: Northgate Bakery, Grafik.
Eine sichtbare caption benennt die Tabelle für alle. Verwende aria-labelledby nur, wenn der Titel außerhalb der Tabelle steht. Nach dem Fix lautet die Ansage typischerweise: Opening hours, Tabelle, 2 Spalten, 8 Zeilen.
Die Region muss existieren, bevor sich ihr Text ändert, sonst verpassen viele Screenreader die Aktualisierung. Nach dem Fix lautet die Ansage typischerweise: Saved (gesprochen, ohne den Fokus zu verschieben).
aria-roledescription ändert die gesprochene Rolle. Setze es sparsam ein und nie auf generischen Elementen. Nach dem Fix lautet die Ansage typischerweise: Customer photos, Karussell.
Eindeutiger Linktext hilft allen, die eine Liste von Links überfliegen. Wenn er mit den sichtbaren Wörtern beginnt, bleibt Label in Name erfüllt. Nach dem Fix lautet die Ansage typischerweise: Read more about winter opening hours, Link.
Wer per Sprachsteuerung click Send sagt, muss genau diesen Button treffen, daher gehört das sichtbare Wort in den Namen. Nach dem Fix lautet die Ansage typischerweise: Send, Schalter.
Fehler aus Audits und ihre Lösungen
Namen vor dem Livegang prüfen
Füge ein Snippet ein. Das Prüftool analysiert es in deinem Browser, ohne Skripte auszuführen, findet das erste interaktive oder benannte Element und ermittelt einen Namen anhand einer gekürzten Version der offiziellen Reihenfolge. Es überspringt mehrere Schritte der Spezifikation, betrachte das Ergebnis also als schnellen Hinweis und bestätige es in den Entwicklertools oder mit einem Screenreader.
Icon-Button
Reparierter Icon-Button
Beschriftetes Feld
Abweichendes Label
Dialog mit labelledby
HTML-Snippet
Kein Button, Link, Feld, keine Landmark, kein Bild und keine Tabelle im Snippet gefunden.
Element
Berechneter Name
(leer)
Herkunft des Namens
Warnungen
Bei dieser vereinfachten Prüfung nichts gefunden.
label-Element
Textinhalt
svg-title
title (schwacher Ersatz)
placeholder (schwacher Ersatz)
aria-labelledby verweist auf die fehlende id "{id}".
aria-label auf einem div oder span ohne Rolle wird von den meisten Screenreadern ignoriert.
Das Bild hat kein alt-Attribut.
Der Placeholder ist der einzige Name. Füge ein Label hinzu.
Kein barrierefreier Name gefunden.
Der sichtbare Text "{visible}" steht nicht am Anfang des Namens (WCAG 2.5.3 Label in Name).
Der Name endet mit einem Rollenwort, die Rolle wird also zweimal gesprochen.
Das Element selbst ist aria-hidden.
Kostenlos starten · Keine Kreditkarte nötig