- In Web-Oberflächen ist es hinsichtlich Barrierefreiheit und Funktionalität die richtige Wahl, statt eines
<div> ein <button> zu verwenden
- Ein
<div> wird von Screenreadern nicht als interaktives Element erkannt und reagiert weder auf Tastaturfokus noch auf Eingaben per Enter oder Spacebar
- Selbst wenn man Attribute wie
[role="button"] oder [tabindex="0"] hinzufügt, bleiben Probleme mit der Fokusreihenfolge und der Verarbeitung von Tastaturereignissen bestehen
- Um diese Probleme zu lösen, mehrere Event-Listener und Bedingungen hinzuzufügen, erzeugt unnötige Komplexität
- Ein
<button> bringt Barrierefreiheit, Fokus und die Verarbeitung von Tastatureingaben von Haus aus mit und ist daher die einfache und standardkonforme Lösung
Falscher Ansatz: Einen Button mit <div> bauen
- Unter React- oder HTMX-Nutzern gibt es viele Fälle, in denen Interaktionen wie das Öffnen eines Modals in der Form
<div onclick="..."> umgesetzt werden
- Probleme dieses Ansatzes
- Screenreader erkennen das Element nicht als interaktives Element
- Es ist per Tastatur nicht fokussierbar
- Nur das
click-Event funktioniert; auf Enter- oder Spacebar-Eingaben reagiert es nicht
Grenzen von Versuchen, die Barrierefreiheit zu „reparieren“
Welche Standardfunktionen <button> mitbringt
Fazit: Einfachheit ist am besten
- Ein
<button> ist die einfachste Methode, um Barrierefreiheitsstandards einzuhalten und zugleich die Code-Menge zu reduzieren
- Statt unnötiger Event-Verarbeitung oder zusätzlicher Attribute ist es für Wartbarkeit und Effizienz vorteilhafter, standardmäßige HTML-Elemente zu verwenden
- Mit der Botschaft „Je fauler der Entwickler, desto eher sollte er das richtige Element verwenden“
wird die Bedeutung guter Entwicklungsgewohnheiten betont: unnötige Komplexität vermeiden und die eingebauten Standardfunktionen nutzen
Noch keine Kommentare.