aria-labelledby
Das aria-labelledby
-Attribut identifiziert das Element (oder die Elemente), das/die das Element, auf das es angewendet wird, bezeichnet.
Beschreibung
Die aria-labelledby
-Eigenschaft ermöglicht es Autoren, andere Elemente auf der Seite zu referenzieren, um einen zugänglichen Namen zu definieren. Dies ist nützlich, wenn Elemente verwendet werden, die keine native Unterstützung dafür bieten, Elemente zu verknüpfen, um einen zugänglichen Namen bereitzustellen.
Einige Elemente erhalten ihren zugänglichen Namen aus ihrem inneren Inhalt. Beispielsweise kommt der zugängliche Name für ein <button>
, <a>
oder <td>
aus dem Text zwischen den öffnenden und schließenden Tags. Andere Elemente, wie das Formular-<textarea>
, <fieldset>
und <table>
, erhalten ihren zugänglichen Namen aus dem Inhalt von zugeordneten Elementen; für diese Elemente stammt der zugängliche Name vom <label>
mit einem for
-Attribut, <legend>
und <caption>
.
Alle interaktiven Elemente müssen einen zugänglichen Namen haben. aria-labelledby
kann verwendet werden, um ein anderes Element zu referenzieren, um seinen zugänglichen Namen zu definieren, wenn der zugängliche Name eines Elements Inhalte aus anderen Teilen des DOM verwenden muss.
Wenn es keine Inhalte gibt, die referenziert werden können, um einen zugänglichen Namen zu erstellen, sollte stattdessen das aria-label
-Attribut verwendet werden.
Der Zweck von aria-labelledby
ist derselbe wie der von aria-label
. Es bietet dem Benutzer einen erkennbaren, zugänglichen Namen für ein interaktives Element. Wenn ein Element beide Attribute gesetzt hat, wird aria-labelledby
verwendet. aria-labelledby
hat Vorrang vor allen anderen Methoden, einen zugänglichen Namen bereitzustellen, einschließlich aria-label
, <label>
, und dem inneren Text des Elements.
Die aria-labelledby
und aria-describedby
Attribute referenzieren beide andere Elemente, um textuelle Alternativen zu berechnen. aria-labelledby
sollte kurzen Text referenzieren, der dem Element einen zugänglichen Namen gibt. aria-describedby
wird verwendet, um längere Inhalte, die eine Beschreibung bereitstellen, zu referenzieren. Wenn es kein Element im DOM gibt, das ein kurzes Label bereitstellt, das für einen zugänglichen Namen für ein interaktives Element geeignet ist, verwenden Sie aria-label
, um den zugänglichen Namen für ein interaktives Element zu definieren.
Hinweis: Während im amerikanischen Englisch "labeled" mit einem "l" geschrieben wird, hat sich die Schreibweise "labelledby" etabliert und wird in Accessibility-APIs verwendet.
Das folgende Beispiel verwendet aria-labelledby
, um einen zugänglichen Namen für ein Checkbox-Input-Element zu definieren, indem der Textinhalt eines benachbarten Elements verwendet wird:
<span
role="checkbox"
aria-checked="false"
tabindex="0"
aria-labelledby="tac"></span>
<span id="tac">I agree to the Terms and Conditions.</span>
Beachten Sie, dass die Verwendung von aria-labelledby
in dieser Situation der Verwendung eines HTML <label>
-Elements mit dem for
-Attribut ähnlich ist, es gibt jedoch einige wichtige Unterschiede. Das aria-labelledby
-Attribut definiert nur den zugänglichen Namen. Es bietet keine anderen Funktionalitäten von <label>
, wie das Aktivieren des zugeordneten Eingabeelements durch Klicken auf das beschreibende Element. Dies muss mit JavaScript hinzugefügt werden.
Glücklicherweise funktioniert das HTML-<input>
mit type="checkbox"
nativ mit <label>
. Wenn möglich, verwenden Sie Folgendes:
<label for="tac">
<input id="tac" type="checkbox" name="terms-and-conditions" />
I agree to the Terms and Conditions.
</label>
<p><a href="tac.html">Read our Terms and Conditions</a>.</p>
Vorteile (und Nachteile)
-
Die
aria-labelledby
-Eigenschaft hat die höchste Priorität, wenn Browser zugängliche Namen berechnen. Beachten Sie, dass sie andere Methoden zur Benennung des Elements überschreibt, einschließlicharia-label
, anderer Benennungsattribute und sogar des Inhalts des Elements.html<button aria-label="Blue" aria-labelledby="color">Red</button> <span id="color">Yellow</span>
In diesem Beispiel ist der zugängliche Name "Yellow".
-
Die
aria-labelledby
-Eigenschaft nimmt als Wert eine durch Leerzeichen getrennte ID-Referenzliste, was bedeutet, dass Sie mehr als ein Element zu einem einzigen zugänglichen Namen kombinieren können. Sie können dieid
des Elements selbst einbeziehen, um auf seinen eigenen Inhalt zu verweisen.html<h2 id="attr" class="article-title">13 ARIA attributes you need to know</h2> <p> There are over 50 ARIA states and properties, but 13 of them stand out… <a href="13.html" id="rm13" aria-labelledby="rm13 attr">read more</a> </p>
In diesem Beispiel ist der zugängliche Name "read more 13 ARIA attributes you need to know".
-
Die Reihenfolge der Werte von
aria-labelledby
ist wichtig. Wenn mehr als ein Element vonaria-labelledby
referenziert wird, wird der Inhalt jedes referenzierten Elements in der Reihenfolge kombiniert, in der sie imaria-labelledby
-Wert referenziert werden. Hätten wiraria-labelledby="attr rm13">
geschrieben, wäre der zugängliche Name gewesen "13 ARIA attributes you need to know read more". -
Die
aria-labelledby
-Eigenschaft ignoriert wiederholteid
s in ihrem Wert. Wenn ein Element mehr als einmal referenziert wird, wird nur der erste Verweis verarbeitet.aria-labelledby="attr attr rm13 rm13">
wird alsaria-labelledby="attr rm13">
behandelt. -
Der
aria-labelledby
-Eigenschaftswert kann Inhalte von Elementen enthalten, die nicht einmal sichtbar sind. Obwohl Sie Benutzern von unterstützenden Technologien den gleichen Inhalt wie allen anderen Benutzern bieten sollten, können Sie Inhalte aus Elementen mit dem HTML-Attributhidden
, CSSdisplay: none
und CSSvisibility: hidden
in den berechneten Namenstring aufnehmen. -
Die
aria-labelledby
-Eigenschaft umfasst den Wert von Eingabe-Elementen. Wenn der Wert ein<input>
referenziert, wird der aktuelle Wert des Formularelements in den berechneten Namensstring aufgenommen und ändert sich, wenn der Wert aktualisiert wird. -
Die
aria-labelledby
-Eigenschaft kann nicht verkettet werden. Wenn ein Element mitaria-labelledby
ein anderes Element referenziert, das ebenfallsaria-labelledby
hat, wird dasaria-labelledby
-Attribut des referenzierten Elements ignoriert.
Warnung:
Da die Berechnung des Namens eines Elements mit aria-labelledby
komplex sein und versteckte Inhalte referenzieren kann, ist das Testen mit unterstützenden Technologien, um sicherzustellen, dass der erwartete Name den Benutzern präsentiert wird, sehr wichtig.
Werte
- ID-Referenzliste
-
Durch Leerzeichen getrennte Liste von einer oder mehreren ID-Werten, die auf die Elemente verweisen, die das aktuelle Element beschriften.
Zugehörige Schnittstellen
Element.ariaLabelledByElements
-
Die
ariaLabelledByElements
-Eigenschaft ist Teil der Schnittstelle jedes Elements. Ihr Wert ist ein Array von Unterklassen vonElement
, die dieid
-Referenzen imaria-labelledby
-Attribut widerspiegeln (mit einigen Vorbehalten). ElementInternals.ariaLabelledByElements
-
Die
ariaLabelledByElements
-Eigenschaft ist Teil der Schnittstelle jedes benutzerdefinierten Elements. Ihr Wert ist ein Array von Unterklassen vonElement
, die dieid
-Referenzen imaria-labelledby
-Attribut widerspiegeln (mit einigen Vorbehalten).
Zugehörige Rollen
Wird in fast allen Rollen verwendet außer in Rollen, denen vom Autor kein zugänglicher Name bereitgestellt werden kann.
Das aria-labelledby
-Attribut wird NICHT unterstützt in:
Spezifikationen
Specification |
---|
Accessible Rich Internet Applications (WAI-ARIA) # aria-labelledby |
Siehe auch
- HTML
<label>
Element - HTML
<legend>
Element - HTML
<caption>
Element aria-label
aria-describedby