You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Status: Vorgeschlagen
Datum: 26.01.2026
Kontext: UI-Komponenten / Design System / Accessibility
1. Einleitung und Zielsetzung
Diese Architekturentscheidung beschreibt, wie interaktive Elemente in Listen und Tabellen so benannt werden, dass sie gleichzeitig:
Kern der Entscheidung ist die kontrollierte Entkopplung des sichtbaren Properties
_labelvom assistiven Property_ariaLabel.Regel wird konform umgesetzt: https://www.w3.org/WAI/WCAG22/Understanding/label-in-name.html
2. Personas als Bewertungsrahmen
Diese Entscheidung wird entlang dreier Personas bewertet.
Persona A — Sehender, nicht eingeschränkter Nutzer
➡ Wahrnehmung über
_label.Persona B — Blinder Nutzer (Screenreader)
➡ Wahrnehmung über
_ariaLabel.Persona C — Sehender Nutzer mit motorischer Einschränkung (Sprachsteuerung)
Wichtig:
Am Button steht sichtbar nur:
In derselben Zeile existiert zusätzlicher sichtbarer Kontext (z. B. „4“, „Rechnung 4711“, „Max Mustermann“).
Dieser Kontext fließt in:
➡ Wahrnehmung über
_ariaLabelin Beziehung zu_label.3. Ausgangslage (Ist-Zustand)
_label._labelwird intern auch als assistiver Name verwendet.Damit gilt aktuell:
Dieses Modell funktioniert für einmalige Aktionen (z. B. „Speichern“ im Dialog), versagt aber in wiederholten Strukturen.
4. Problemstellung
In Listen und Tabellen treten identische Aktionen mehrfach auf:
_label = "Speichern"_label = "Löschen"_label = "Bearbeiten"Visuell ist dies korrekt und erwartet.
Assistiv entstehen jedoch Probleme:
Damit entsteht ein Zielkonflikt:
_label.5. Architekturentscheidung
Wir erlauben explizit, dass sich
_ariaLabelvom_labelunterscheiden darf.5.1 Fallback-Regel
Wenn
_ariaLabelnicht gesetzt ist:5.2 Kontextregel
In wiederholten Strukturen wird
_ariaLabelum sichtbaren Kontext ergänzt:Kontext stammt aus sichtbarem Zeileninhalt.
5.3 Teilstring-Regel
Wenn
_ariaLabelgesetzt wird, gilt:6. Argumentation anhand der Personas
6.1 Wirkung für Persona A (sehender Nutzer)
_label.6.2 Wirkung für Persona B (Screenreader)
_ariaLabel.6.3 Wirkung für Persona C (Sprachsteuerung)
_ariaLabel.7. Visualisierung: Wahrnehmungsebenen
flowchart TB subgraph UI["UI (sichtbar)"] row["Zeile: 4 | Rechnung 4711 | [Button: 'Speichern']"] end subgraph Props["Properties"] label["_label = 'Speichern'"] aria["_ariaLabel = 'Speichern Rechnung 4711'"] end subgraph Personas["Personas"] A["Persona A\n(sehend)"] B["Persona B\n(Screenreader)"] C["Persona C\n(Sprachsteuerung)"] end row --> label row --> aria label --> A aria --> B aria --> CDieses Diagramm zeigt die Trennung zwischen sichtbarer UI-Ebene (
_label) und assistiver Ebene (_ariaLabel).8. Visualisierung: Erzeugung des
_ariaLabelDieses Diagramm zeigt, dass
_ariaLabeldeterministisch aus_labelund sichtbarem Kontext entsteht.9. Visualisierung: Entscheidungslogik
flowchart TD start([Interaktives Element]) --> repeated{Wiederholt sich _label?} repeated -- Nein --> ok1[Kein _ariaLabel nötig] repeated -- Ja --> inList{Liste/Tabelle?} inList -- Nein --> ok2[_ariaLabel optional] inList -- Ja --> need[Setze _ariaLabel := _label + Kontext] need --> check{_ariaLabel enthält _label?} check -- Ja --> done([OK]) check -- Nein --> fail([Fehler])10. Konsequenzen
Positiv
Negativ / Risiken
Nutzer sehen nur
_label, müssen ggf._ariaLabelsprechen.Risiko inkonsistenter Benennung.
Anhang A: Developer Guidelines
A1. Grundregeln
_label: sichtbare Beschriftung._ariaLabel: assistiver Name.Fallback:
Teilstring-Regel:
_ariaLabelmuss_labelenthalten.A2. Wann
_ariaLabelsetzen?A3. Aufbau eines guten
_ariaLabelFormel:
Kontext muss sichtbar sein:
A4. Do / Don’t
Do:
Don’t:
A5. Technische Checks
_ariaLabelenthält_label_ariaLabelist eindeutig im Row-Scope0 votes ·
Beta Was this translation helpful? Give feedback.
All reactions