Aufbau einer React-Komponente
Meine Vorstellung davon, wie jede React-Komponente aussehen sollte
421
8 min.
Der SSB-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Schaltflächen fest.
<button> verwendet. <div> und <span> mit Event-Handlern erhalten nicht automatisch die Semantik oder Tastaturbedienung eines Buttons.type wird für jeden Button explizit angegeben. Sein Wert richtet sich nach der beabsichtigten Aktion, nicht nur nach der Position des Buttons:
type="submit" sendet das zugehörige Formular ab;type="button" führt eine Oberflächenaktion aus, ohne ein Formular abzusenden oder zurückzusetzen;type="reset" setzt die Formularelemente auf ihre Ausgangswerte zurück.type, kann das Formular abgesendet werden: Das Standardverhalten hängt vom Kontext und der Formularzugehörigkeit des Buttons ab. Über das Attribut form kann ein Button auch außerhalb des <form>-Elements einem Formular zugeordnet werden.type="reset" wird nur verwendet, wenn das Zurücksetzen auf die Ausgangswerte die erwartete Aktion ist. Ein Formular-Reset leert die Felder nicht unbedingt, sondern stellt für jedes Steuerelement den Standardwert wieder her.role="group" mit einem zugänglichen Namen verwendet; für zusammengehörige Formularfelder eignen sich <fieldset> und <legend>.role="toolbar" kennzeichnet eine tatsächliche Werkzeugleiste und ist kein allgemeiner Ersatz für eine Gruppe. Eine Werkzeugleiste ermöglicht die Tastaturnavigation zwischen Steuerelementen mit den Pfeiltasten und verwaltet den Fokus entsprechend.aria-pressed="true" oder aria-pressed="false" ausgegeben. Ändert sich die Beschriftung, zum Beispiel von „Wiedergabe“ zu „Pause“, wird aria-pressed üblicherweise nicht ergänzt.aria-label oder aria-labelledby einen aussagekräftigen Namen.aria-hidden="true". Ein redundanter Name über aria-label wird nicht ohne Bedarf ergänzt.Enter und der Leertaste aktiviert. Eigene Event-Handler dürfen weder die native Tastaturbedienung beeinträchtigen noch dieselbe Aktion doppelt auslösen.:focus-visible verwendet; Kontrast und Sichtbarkeit werden auf allen verwendeten Hintergründen geprüft.:hover, :active, :focus-visible und :disabled müssen, sofern anwendbar, visuell unterscheidbar sein. Hover darf nicht der einzige Hinweis auf eine Aktion sein: Bei Touch-Eingaben steht er nicht zur Verfügung und ersetzt weder Fokus- noch Aktivierungszustände.disabled verwendet. Anders als aria-disabled="true" verhindert es die Aktivierung und nimmt den Button aus der regulären Fokusreihenfolge.aria-disabled="true" wird nur verwendet, wenn ein nicht verfügbarer Button in der Fokusreihenfolge bleiben muss. In diesem Fall müssen die Aktion und ihr Event-Handler separat blockiert werden.disabled sein.aria-busy="true" kennzeichnet, dass das betreffende Element aktualisiert wird, garantiert aber nicht, dass ein Ladetext vorgelesen wird. Der Status wird separat ausgegeben, zum Beispiel mit einem Element mit role="status".aria-busy zurückgesetzt, der Button in seinen aktuellen Zustand versetzt und das Ergebnis oder der Fehler zugänglich gemacht.cursor: pointer und für deaktivierte Buttons cursor: not-allowed gesetzt. Der Cursor ist nur ein visueller Hinweis und ersetzt weder die Button-Semantik noch dessen Zustände.1px. Der Effekt darf Text, Fokus oder andere Zustände nicht beeinträchtigen.prefers-reduced-motion: reduce verkürzt oder deaktiviert, sofern die Bewegung nicht zum Verständnis einer Zustandsänderung erforderlich ist.24 × 24 CSS-px groß sein oder eine Ausnahme des Erfolgskriteriums erfüllen, zum Beispiel ausreichenden Abstand zu benachbarten Zielen.type explizit angegeben. Das Verhalten von Buttons innerhalb eines Formulars und von Buttons, die über das Attribut form zugeordnet sind, wird geprüft.:hover, :active, :focus-visible, disabled und der Ladezustand sind visuell unterscheidbar und hängen nicht allein von Farbe oder Cursor ab.role="toolbar" werden zusätzlich Pfeiltastennavigation, Fokusverwaltung und das Verhalten der Tab-Taste geprüft.Buttons mit explizitem Typ:
<form action="/subscribe" method="post">
<button type="submit">Abonnieren</button>
<button type="reset">Ausgangswerte wiederherstellen</button>
</form>
<button type="button">Einstellungen öffnen</button>Icon-Button und Button-Gruppe:
<button type="button" aria-label="Löschen">
<svg aria-hidden="true" viewBox="0 0 24 24">...</svg>
</button>
<div role="group" aria-label="Formatierung">
<button type="button" aria-pressed="false">Fett</button>
<button type="button" aria-pressed="false">Kursiv</button>
<button type="button" aria-pressed="false">Unterstrichen</button>
</div>Button-Zustände und Tastaturfokus:
button:enabled {
cursor: pointer;
transition: transform 120ms ease;
}
button:disabled {
cursor: not-allowed;
}
button:hover:enabled {
background-color: #e0e0e0;
}
button:active:enabled {
background-color: #d0d0d0;
transform: translateY(1px);
}
button:focus-visible {
outline: 2px solid currentColor;
outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
button {
transition: none;
}
}Farbe des Fokusindikators und Hintergrund werden unter Berücksichtigung des Kontrasts in der Oberfläche gewählt. Die Anzeige von :focus-visible richtet sich nach Browserheuristiken und kann auch aus anderen Gründen als der Tastatureingabe erfolgen.
Asynchrone Aktion mit separater Statusmeldung:
<div aria-busy="true">
<button type="submit" disabled>Wird gespeichert...</button>
</div>
<p role="status">Änderungen werden gespeichert</p>aria-busy kennzeichnet den aktualisierten Bereich, während role="status" die Statusänderung ohne Fokusverschiebung mitteilt. Nach Abschluss der Operation ist der Bereich nicht mehr beschäftigt, der Button wird aktualisiert und der Status gibt das Ergebnis aus.
Ähnliche Kategorien:
Meine Vorstellung davon, wie jede React-Komponente aussehen sollte
421
8 min.
Der SST-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Registerkarten fest
62
6 min.
Der SSF-U-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Vollbildmodus fest
248
2 min.
Der SSA-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Akkordeons fest
258
2 min.
Analyse kritischer Fehler im Webdesign. Warum Slider, Autoplay und schwerfällige Seiten die Konversionsrate sowie die Platzierungen bei Google verschlechtern
232
2 min.
Der SSP-Standard legt Anforderungen an die Semantik, Barrierefreiheit und Funktionslogik von Paginierung fest
240
1 min.