aria-controls

Wohin zeigt Ihr aria-controls?

Verschriebener Name, fehlende Ziel-ID, doppelte ID: drei Wege, den Bezug zu verlieren.

Website prüfen
Beispiel im Prüfbericht Markierter Befund
Markierter Befund · Kritisch · WCAG 4.1.2aria-expanded="maybe" ist ungültig

Beziehung statt Verhalten

So findet der Schalter sein Ziel

aria-controls verbindet zwei Elemente über eine eindeutige ID. Mehr tut es nicht.

Statischer Bauplan eines geöffneten Aufklappbereichs, keine bedienbare Oberfläche

1 Steuerndes Element

Schichtnotiz anzeigen
Beziehung
aria-controls="notiz-1"
Zustand
aria-expanded="true"

2 Gesteuerter Bereich

id="notiz-1"Schichtnotiz

Übergabe um 14:00 Uhr. Der Kühlraum bleibt geschlossen.

Zum Schichtplan
Zugeklapptaria-expanded="false"
hidden am Ziel
Aufgeklapptaria-expanded="true"
hidden entfernt
Die Leitung ist beschriftet, aber sie schaltet nichts.

aria-controls macht die Beziehung für Software erkennbar. JavaScript muss den Bereich weiterhin zeigen oder verbergen und aria-expanded aktualisieren. Setzen Sie keinen Fokuswechsel voraus: Die Quelltextreihenfolge bleibt entscheidend.

Drei Leitungsfehler

Wo die Verbindung abreißt

aria-controllid="notiz-1"
Attribut falsch geschrieben

Der Browser kennt aria-controll nicht. Die Beziehung fehlt vollständig.

notiz-01notiz-1
Ziel-ID stimmt nicht

Keine Raute, keine Näherung: Der Wert muss exakt der vorhandenen ID entsprechen.

notiz-1id="notiz-1"id="notiz-1"
Ziel-ID doppelt vergeben

Eine ID gehört genau einem Element. Zwei Ziele machen den Bezug mehrdeutig.

Dasselbe Kabel, andere Bauteile

Drei passende Einsatzorte

Aufklapp-Schalteraria-controls="hilfe"Bereich id="hilfe"
Register „Details“aria-controls="details"tabpanel id="details"
Suchfeld mit Vorschlägenaria-controls="treffer"listbox id="treffer"

Der Wert darf auch mehrere, durch Leerzeichen getrennte IDs enthalten. Verwenden Sie das nur, wenn ein Steuerelement wirklich mehrere Bereiche kontrolliert.

Vollständiger Aufklapper

Markup und Zustandswechsel

HTML

<h2>
  <button type="button" id="notiz-schalter"
    aria-expanded="false" aria-controls="notiz-1">
    Schichtnotiz anzeigen
  </button>
</h2>

<div id="notiz-1" hidden>
  <p>Übergabe um 14:00 Uhr.</p>
  <a href="/schichtplan">Zum Schichtplan</a>
</div>

JavaScript

const schalter = document.querySelector('#notiz-schalter');
const bereich = document.querySelector('#notiz-1');

schalter.addEventListener('click', () => {
  const offen = schalter.getAttribute('aria-expanded') === 'true';

  schalter.setAttribute('aria-expanded', String(!offen));
  bereich.hidden = offen;
});

Vier Abnahmepunkte

So prüfen Sie es

  1. 01

    Suchen Sie die Ziel-ID. Es gibt genau einen Treffer.

  2. 02

    Drücken Sie Enter oder Leertaste. Der Bereich erscheint.

  3. 03

    Prüfen Sie: aria-expanded und hidden wechseln zusammen.

  4. 04

    Drücken Sie Tab. Der nächste Stopp folgt der sichtbaren Quelltextreihenfolge.

Aus dem Prüfbericht

Drei Fälle, drei Befunde

Zum Mitnehmen

Der Bezug, korrigiert

Ein Attributname, eine ID, einmal vergeben.

Korrektur in 2 Schritten ansehen
  1. Attributname und Ziel-ID abgleichen

    aria-controls schreibt sich ohne zweites l. Der Wert ist genau die id des gesteuerten Bereichs.

    KorrekturvergleichSchritt 1 · HTML

    Vorher

    <button type="button" aria-expanded="false" aria-controll="notiz-01">
      Schichtnotiz öffnen
    </button>
    <div id="notiz-1" hidden>…</div>

    Nachher

    <button type="button" aria-expanded="false" aria-controls="notiz-1">
      Schichtnotiz öffnen
    </button>
    <div id="notiz-1" hidden>…</div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Prüfen Sie in den Entwicklerwerkzeugen: die id im Attribut und am Bereich sind identisch.

  2. Jede ID nur einmal vergeben

    Zwei Elemente mit derselben id machen jeden Bezug zweideutig. Der zweite Bereich bekommt eine eigene.

    KorrekturvergleichSchritt 2 · HTML

    Vorher

    <div id="notiz-1" hidden>Schichtnotiz</div>
    <div id="notiz-1">Archiv</div>

    Nachher

    <div id="notiz-1" hidden>Schichtnotiz</div>
    <div id="archiv-1">Archiv</div>

    Markierte Zeilen wurden geändert

    So prüfen Sie es Suchen Sie im Quelltext nach id="notiz-1". Es gibt genau einen Treffer.

Werbung

Kostenloser Website-Barrierefreiheits-Check

Website auf Barrierefreiheit prüfen.

Technische WCAG-Warnsignale erkennen. Kritische Stellen zuerst prüfen.

Der Website-Check ist bereit.

Werbung

Ein letzter Schritt

Prüfen, bevor Sie gehen.

Finden Sie automatisch erkennbare Barrieren auf Ihrer eigenen Website.

Website prüfen

Kostenlos starten · keine Installation

Automatisches Screening. Tastaturbedienung und Screenreader bleiben manuelle Prüfung.