aria-disabled
Der aria-disabled
Zustand zeigt an, dass das Element wahrnehmbar, aber deaktiviert ist, sodass es nicht bearbeitet oder anderweitig operabel ist.
Beschreibung
Das aria-disabled
Attribut, wenn auf true
gesetzt, zeigt an, dass das Element, auf dem es gesetzt ist, und alle seine fokussierbaren Nachkommen im deaktivierten Zustand sein sollen. Diese Deklaration informiert Personen, die unterstützende Technologien nutzen, wie Bildschirmleser, dass solche Elemente nicht bearbeitet oder anderweitig operabel sein sollen.
Im Gegensatz zu HTMLs disabled
Boolean-Attribut, das ein Formularelement als semantisch deaktiviert kommuniziert, sein Styling ändert, um seinen Zustand widerzuspiegeln und alle Funktionalität unterdrückt sowie den Wert des Elements von der Formularübermittlung ausschließt, gibt aria-disabled="true"
nur diese Elemente semantisch als deaktiviert wieder. Webentwickler müssen manuell sicherstellen, dass solche Elemente ihre Funktionalität unterdrückt haben, wenn sie im deaktivierten Zustand angezeigt werden.
Wenn native HTML-Formularelemente deaktiviert werden müssen, müssen Entwickler das disabled
Attribut angeben, da es alle allgemein erwarteten Funktionen des Deaktivierens eines Steuerungselements standardmäßig bereitstellt. Es kann jedoch Fälle geben, in denen Elemente als deaktiviert angezeigt werden sollen, aber immer noch für Benutzer auffindbar sind, wenn sie über die Tab-Taste navigieren. Dies kann ihre Auffindbarkeit verbessern, da sie nicht aus der Fokusreihenfolge der Webseite entfernt werden, da aria-disabled
die Fokusfähigkeit solcher Elemente nicht ändert, noch werden die Elemente im Standard-Browserstyling gedimmt, was sie leichter lesbar macht. Einige Beispiele, wo dies nützlich sein könnte, umfassen:
- Das Header-Button-Element, das mit einem nicht zusammenklappbaren Akkordeon-Panel verknüpft ist,
- Ein Button, der wichtig ist, in der Fokusreihenfolge der Seite zu bleiben, dessen Aktion aber derzeit nicht verfügbar ist - wie das Einreichen eines Formulars,
- Temporär inaktive Elemente in einem Menü-Widget, das ansonsten nicht durch Standardtastaturnavigation übersprungen würde.
In jedem dieser Fälle möchte man vielleicht, dass Benutzer diese Elemente durch standardmäßige Tastaturnavigation finden, obwohl die Funktionalität dieser Steuerungen entfernt oder "deaktiviert" ist. Entwickler müssen weiterhin JavaScript verwenden, um die Funktionalität des Elements vollständig zu deaktivieren und gleichzeitig das Erscheinungsbild des Elements zu ändern, sodass sehende Benutzer wissen, dass es deaktiviert ist.
Hinweis:
Der deaktivierte Zustand gilt für das Element mit aria-disabled="true"
und alle seine fokussierbaren Nachkommen. Seien Sie vorsichtig, wenn Sie dieses Attribut auf Container-Elementen verwenden, insbesondere, wenn ein Container sowohl Formularelemente als auch Links enthält - wo die Absicht darin besteht, die Formularelemente als im deaktivierten Zustand zu exponieren, aber nicht, um die Links als "deaktiviert" zu kommunizieren.
Ein weiterer Grund, das aria-disabled
Attribut über das HTML disabled
Attribut zu verwenden, ist, wenn Sie benutzerdefinierte Steuerungen erstellt haben, die als deaktiviert markiert werden müssen, aber kein Element verwenden, das das disabled
Attribut erlaubt. Zum Beispiel wurde im folgenden Snippet ein <div>
verwendet, um einen benutzerdefinierten Button zu erstellen, der als deaktiviert markiert werden muss. Allerdings erwartet oder respektiert das <div>
-Element das disabled
Attribut nicht - selbst wenn es mit einem role="button"
versehen wird, um seine exponierte ARIA-Rolle zu ändern. Das aria-disabled
Attribut ist erforderlich, um solche benutzerdefinierten Steuerungen zu deaktivieren.
<div role="button" aria-disabled="true" tabindex="-1">Edit</div>
Ähnlich wie JavaScript benötigt wird, um sicherzustellen, dass ein Element mit aria-disabled="true"
nicht funktional ist, benötigen die Elemente auch Stiländerungen. Im Gegensatz zum HTML disabled
Attribut, bei dem durch das Angeben Benutzeragent-Stile :disabled
angewendet werden, tut dies aria-disabled="true"
nicht. Das Element kann mit dem Attributselektor [aria-disabled="true"]
formatiert werden.
[aria-disabled="true"] {
opacity: 0.5;
}
Wenn Sie das aria-disabled
Attribut bewusst verwenden, um ein Formularelement in der Tastaturfokusreihenfolge der Seite zu belassen, insbesondere wenn das Element wichtige Inhalte darstellt, die alle Benutzer wahrnehmen können sollten, müssen Sie möglicherweise Stile verwenden, die immer noch den Farbkontrastanforderungen entsprechen. Zum Beispiel ist ein deaktivierter Button/Überschrift, der ein nicht zusammenklappbares Akkordeon-Panel einführt, Inhalt, der lesbar bleiben muss.
@media (forced-colors: active) {
[aria-disabled="true"] {
border-color: GrayText;
color: GrayText;
}
}
Die forced-colors
Media Query erkennt, ob der Benutzeragent einen erzwungenen Farbmodus aktiviert hat; in diesem Fall werden sowohl die Text- als auch die Rahmenfarben auf die Systemfarbe greyText
gesetzt.
Ein weiterer Punkt, den Sie beachten sollten, wenn Sie aria-disabled
gegenüber dem nativen HTML-Attribut verwenden, ist, dass das ARIA-Attribut das manuelle Styling erfordert, das notwendig ist, um das Element im Windows High Contrast Mode visuell als deaktiviert zu kommunizieren.
Hinweis:
Wenn Sie CSS's pointer-events: none;
verwenden, um ein Element nicht anklickbar zu machen, stellen Sie sicher, dass Sie auch die Interaktivität mit JavaScript deaktivieren. pointer-events: none;
verhindert Mausklicks, verhindert jedoch nicht, dass das Element über die Tastatur aktiviert wird.
function onClick(event) {
event.preventDefault();
}
function toggleDisabled(element, status, update) {
if (status) {
// element.input.disabled = false;
element.setAttribute("aria-disabled", "false");
update.textContent = "The element is now enabled.";
element.addEventListener("click", onClick);
} else {
// element.input.disabled = true;
element.setAttribute("aria-disabled", "true");
update.textContent = "The element is now disabled.";
element.removeEventListener("click", onClick);
}
}
Beim Wechsel von aria-disabled="true"
zu "false"
, verwenden Sie JavaScript, um:
- Den Wert auf
false
umzuschalten (oder das Attribut vollständig zu entfernen), - Das Element zu aktivieren und
- Den Benutzer darüber zu informieren, dass die Steuerung jetzt aktiv ist.
Wenn Sie nur CSS verwendeten, um den deaktivierten Zustand mit einem Attributselektor zu gestalten, wird der Selektor nicht mehr übereinstimmen und das deaktivierte Styling wird nicht mehr wirksam sein.
Werte
Zugehörige Schnittstellen
Element.ariaDisabled
-
Die
ariaDisabled
Eigenschaft, Teil derElement
Schnittstelle, spiegelt den Wert desaria-disabled
Attributs wider, das anzeigt, dass das Element wahrnehmbar, aber deaktiviert ist, sodass es nicht bearbeitet oder anderweitig operabel ist. ElementInternals.ariaDisabled
-
Die
ariaDisabled
Eigenschaft derElementInternals
Schnittstelle spiegelt den Wert desaria-disabled
Attributs wider.
Zugehörige Rollen
Verwendet in Rollen:
Erbt in Rollen:
Spezifikationen
Specification |
---|
Accessible Rich Internet Applications (WAI-ARIA) # aria-disabled |