ARIA: aria-labelledby Attribut
Das aria-labelledby Attribut identifiziert das Element (oder die Elemente), das dem Element, auf welches es angewendet wird, einen Namen zuordnet.
Beschreibung
Die aria-labelledby Eigenschaft ermöglicht es Autoren, auf andere Elemente auf der Seite zu verweisen, um einen barrierefreien Namen zu definieren. Dies ist nützlich, wenn Elemente verwendet werden, die keine native Unterstützung für die Zuordnung von Elementen haben, um einen barrierefreien Namen bereitzustellen.
Einige Elemente erhalten ihren barrierefreien Namen aus ihrem inneren Inhalt. Zum Beispiel kommt der barrierefreie Name für eine <button>, <a>, oder <td>-Element aus dem Text zwischen dem öffnenden und schließenden Tag. Andere Elemente, wie Formular-<textarea>, <fieldset> und <table>-Elemente, erhalten ihren barrierefreien Namen aus dem Inhalt der zugeordneten Elemente; für diese Elemente kommt der barrierefreie Name aus dem <label> mit einem for Attribut, <legend> und <caption> jeweils.
Alle interaktiven Elemente müssen einen barrierefreien Namen haben. aria-labelledby kann verwendet werden, um auf ein anderes Element zu verweisen, um seinen barrierefreien Namen zu definieren, wenn der barrierefreie Name eines Elements Inhalte aus einer anderen Stelle im DOM verwenden muss.
Wenn es keinen Inhalt gibt, der referenziert werden kann, um einen barrierefreien Namen zu erstellen, sollte das aria-label Attribut stattdessen verwendet werden.
Der Zweck von aria-labelledby ist derselbe wie der von aria-label. Es stellt dem Benutzer einen erkennbaren, barrierefreien Namen für ein interaktives Element zur Verfügung. Wenn ein Element beide Attribute gesetzt hat, wird aria-labelledby verwendet. aria-labelledby hat auch Vorrang vor den meisten anderen Methoden, um einen barrierefreien Namen bereitzustellen, wie zum Beispiel <label> und dem inneren Text des Elements. Beachten Sie, dass Element.ariaLabelledByElements die höchste Priorität hat, um das ARIA-Label zu setzen.
Die aria-labelledby und aria-describedby Attribute referenzieren beide andere Elemente, um Textalternativen zu berechnen. aria-labelledby sollte auf kurzen Text verweisen, der dem Element einen barrierefreien Namen gibt. aria-describedby wird verwendet, um auf längere Inhalte zu verweisen, die eine Beschreibung liefern. Wenn es kein Element im DOM gibt, das ein kurzes, für einen barrierefreien Namen geeignetes Label für ein interaktives Element bereitstellt, verwenden Sie aria-label, um den barrierefreien 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 Zugänglichkeits-APIs verwendet.
Das folgende Beispiel verwendet aria-labelledby, um einen barrierefreien Namen für eine Kontrollkästcheneingabe bereitzustellen, indem der Textinhalt eines Nachbarelements 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>
Hinweis:
<span> Elemente haben standardmäßig die generic Rolle und können aria-labelledby nicht verwenden, es sei denn, sie spezifizieren auch eine Rolle, die einen barrierefreien Namen bieten kann.
Hier tun wir dies mit role="checkbox".
Die Verwendung von aria-labelledby ist in dieser Situation ähnlich wie die Verwendung eines HTML-<label> Elements mit dem for Attribut, es gibt jedoch einige sehr wichtige Unterschiede. Das aria-labelledby Attribut definiert nur den barrierefreien Namen. Es bietet keine der anderen Funktionen von <label>, wie zum Beispiel das Aktivieren der Eingabe, indem auf das Label-Element geklickt wird, das ihm zugeordnet ist. Das muss mit JavaScript hinzugefügt werden.
Zum Glück funktioniert das HTML-<input> mit type="checkbox" mit nativen <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-labelledbyEigenschaft hat die höchste Priorität, wenn Browser barrierefreie Namen berechnen. Beachten Sie, dass sie andere Methoden zur Benennung des Elements überschreibt, einschließlicharia-label, andere Benennungsattribute und sogar den Inhalt des Elements.html<button aria-label="Blue" aria-labelledby="color">Red</button> <span id="color">Yellow</span>In diesem Beispiel ist der barrierefreie Name "Yellow".
-
Die
aria-labelledbyEigenschaft nimmt als Wert eine durch Leerzeichen getrennte ID-Referenzliste, was bedeutet, dass Sie mehr als ein Element zu einem einzigen barrierefreien Namen kombinieren können. Sie können dieiddes Elements selbst einschließen, um auf dessen 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 lautet der barrierefreie Name "read more 13 ARIA attributes you need to know".
-
Die Reihenfolge der
aria-labelledbyEigenschaftswerte ist wichtig. Wenn mehr als ein Element durcharia-labelledbyreferenziert wird, wird der Inhalt jedes referenzierten Elements in der Reihenfolge kombiniert, in der sie in demaria-labelledbyWert referenziert werden. Hätten wiraria-labelledby="attr rm13">geschrieben, wäre der barrierefreie Name "13 ARIA attributes you need to know read more". -
Die
aria-labelledbyEigenschaft ignoriert wiederholteids 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. -
Die
aria-labelledbyEigenschaftswerte können Inhalte von Elementen beinhalten, die nicht einmal sichtbar sind. Während Sie den Nutzern von unterstützenden Technologien den gleichen Inhalt wie allen anderen Nutzern bereitstellen sollten, können Sie Inhalte von Elementen mit dem HTML-Attributhidden, der CSS-Eigenschaftdisplay: noneund der CSS-Eigenschaftvisibility: hiddenin die berechnete Namenszeichenfolge einbeziehen. -
Die
aria-labelledbyEigenschaft integriert den Wert von Eingabeelementen. Wenn der Wert auf ein<input>verweist, wird der aktuelle Wert des Formularelements in die berechnete Namenszeichenfolge aufgenommen und ändert sich, wenn der Wert aktualisiert wird. -
Die
aria-labelledbyEigenschaft kann nicht verkettet werden. Wenn ein Element mitaria-labelledbyauf ein anderes Element verweist, das ebenfallsaria-labelledbyhat, wird dasaria-labelledby-Attribut auf dem referenzierten Element ignoriert.
Warnung:
Da die Berechnung des Namens eines Elements mit aria-labelledby komplex sein und auf versteckte Inhalte verweisen kann, ist das Testen mit unterstützenden Technologien sehr wichtig, um sicherzustellen, dass der erwartete Name den Nutzern präsentiert wird.
Werte
- ID-Referenzliste
-
Durch Leerzeichen getrennte Liste von einem 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-labelledbyAttribut reflektieren (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-labelledbyAttribut reflektieren (mit einigen Vorbehalten).
Zugehörige Rollen
Wird in fast allen Rollen verwendet außer Rollen, denen der Autor keinen barrierefreien Namen zuweisen kann.
Das aria-labelledby Attribut wird NICHT unterstützt in:
Spezifikationen
| Spezifikation |
|---|
| Accessible Rich Internet Applications (WAI-ARIA)> # aria-labelledby> |
Siehe auch
- HTML
<label>Element - HTML
<legend>Element - HTML
<caption>Element aria-labelaria-describedby