Warum Schaltflächen einen Namen brauchen
Eine Schaltfläche ohne Namen wird nur als „Schalter“ angesagt, und niemand weiß, was sie tut. Icon-Buttons für Menü, Suche oder Schließen brauchen deshalb einen Namen im Code.
So funktioniert es
Schaltflächen, im Code button, lösen etwas auf der Seite aus: das Menü öffnen, ein Formular absenden, einen Dialog schließen, ein Bild weiterblättern. Ein Screenreader sagt sie mit ihrer Rolle und ihrem Namen an, etwa „Menü, Schalter“.
Der Name kommt aus dem Text im Button. Viele Buttons zeigen aber nur ein Symbol: drei Striche für das Menü, eine Lupe, ein X. Sehende erkennen das Symbol, im Code steht kein Text. Dann sagt der Screenreader nur „Schalter“, und Sprachsteuerung kann den Button nicht ansprechen.
WCAG 2.2 verlangt in Kriterium 4.1.2, dass jedes Bedienelement einen Namen und eine Rolle hat, die Hilfsmittel auslesen können.
Worauf es ankommt
- Ein Name für jeden Button. Ohne sichtbaren Text gibt ihm
aria-labeleinen Namen; das Symbol bekommtaria-hidden="true", damit es nicht doppelt vorgelesen wird:
<button type="button" aria-label="Menü öffnen" aria-expanded="false">
<svg aria-hidden="true" focusable="false">…</svg>
</button>
- Der Name sagt, was passiert. „Suche starten“, „Dialog schließen“, „Nächstes Bild“, nicht „Icon“ oder „Button“.
- Sichtbarer Text ist im Namen enthalten. Hat der Button Text, reicht der; ein abweichendes
aria-labelwürde ihn überschreiben, und Sprachsteuerung fände den Button unter seinem sichtbaren Namen nicht mehr (Kriterium 2.5.3). - Echte Buttons statt Nachbauten. Ein
divmit Klick-Funktion ist für Tastatur und Screenreader kein Button. Mitrole="button"braucht er zusätzlichtabindex="0"und Bedienung per Enter und Leertaste. Dasbutton-Element bringt das alles mit. - Eingabe-Buttons. Bei
<input type="submit">odertype="button"steht der Name im Attributvalue.
So richtest du es ein
Icon-Buttons stecken fast immer im Theme, im Seitenbaukasten oder in Plugins: Menü-Button, Suche, Warenkorb, Slider-Pfeile, das X von Popups und Cookie-Bannern. Den Namen ergänzt, wer das Theme pflegt, oder der Anbieter des Plugins; viele Baukästen haben dafür ein Feld „ARIA-Label“ in den erweiterten Einstellungen des Elements. Der Report nennt die betroffenen Buttons mit ihrem Code, damit du sie im Theme findest.