Zum Inhalt springen

Übungsseite Accessibility Testing

WCAG 2.2, Stufe A und AA – 55 Kriterien zum Selbstprüfen

Barrieren finden üben – an Beispielen, die es in sich haben

So benutzt du diese Seite

Diese Seite enthält absichtlich Barrieren. Sie stehen ausschließlich in den gestrichelt umrandeten Kästen mit der Überschrift „Beispiel“. Alles außerhalb dieser Kästen – Navigation, Erklärtexte, Auflösungen – soll barrierefrei sein. Fällt dir dort etwas auf, ist das ein echter Befund: Sag es im Kurs.

  1. Kriterium wählen. Jeder Abschnitt nennt in einem Satz, was das Kriterium verlangt, und gibt einen Prüfweg an.
  2. Beispiele prüfen. Meist gibt es zwei oder mehr Beispiele. Welches das Kriterium erfüllt und welches nicht, steht nicht dabei – das findest du mit Tastatur, Screenreader, Entwicklerwerkzeugen und Messwerkzeugen selbst heraus. Die Reihenfolge wechselt: Beispiel A ist nicht immer das mit der Barriere.
  3. Urteil notieren, dann auflösen. Unter jedem Kriterium steht eine aufklappbare Auflösung mit Begründung und Grenzfall.
  • Ton, Bewegung, Zeitlimits und die Fokusfalle starten erst, wenn du sie mit einer Schaltfläche der Übungsseite startest. Dort kannst du sie auch wieder stoppen.
  • Alle Namen, Einrichtungen und Daten in den Beispielen sind erfunden. Formulare senden nichts ab und speichern nichts. Gib trotzdem keine echten Daten ein.
  • Die deutschen Namen der Kriterien sind Übersetzungen. Verbindlich ist die Nummer.
  • Zu den Kriterien, die eine ganze Seite oder mehrere Seiten betreffen (zum Beispiel Seitentitel, Sprache der Seite, konsistente Navigation), gehören zwei kleine Beispielsites, die du in einem eigenen Tab öffnest.

Werkzeug-Demos: Entwicklerwerkzeuge und Barrierefreiheitsbaum

Zum Einstieg in DOM, Barrierefreiheitsbaum und automatische Prüfwerkzeuge – bevor es an die einzelnen Kriterien geht.

Der Button, der keiner ist

Zwei Schaltflächen mit derselben Aufschrift und demselben Aussehen – und darunter als Zugabe eine dritte. Mit der Maus tun alle dasselbe. Was ein Bedienelement wirklich ist, zeigt erst der Blick unter die Oberfläche: Tastatur, DOM und Barrierefreiheitsbaum.

So prüfst du: Klicke A und B mit der Maus an, später auch C. Lege dann die Maus weg: Tab – wo landet der Fokus? Enter und Leertaste – was passiert? Danach Rechtsklick auf jedes Element → „Untersuchen“ (Entwicklerwerkzeuge: F12, am Mac Cmd + Wahltaste + I): Welches Element steht im DOM? Im Bereich „Barrierefreiheit“: Welche Rolle, welcher Name? In Safari erreichst du Schaltflächen und Links ab Werk nur mit Wahltaste + Tab.

Beispiel: A und B

  • A
  • B
    Termin buchen

Sprechzeiten ansehen

Sprechzeiten der Praxis: Montag bis Freitag, 8 bis 12 Uhr.

Nach jedem Auslösen steht rechts neben dem Element „Gebucht“, beim zweiten Mal „Gebucht (2-mal)“. Gebucht wird in dieser Übung nichts.

Beispiel: Zugabe C

  • C
    Termin buchen
Auflösung zu „Der Button, der keiner ist“
  • A – eine echte Schaltfläche. Im DOM steht ein button-Element. Tab erreicht es, Enter und Leertaste lösen aus. Im Baum: Rolle Schaltfläche (button), Name „Termin buchen“ aus dem Inhalt. 4.1.2 und 2.1.1 sind erfüllt.
  • B – nur Text mit einem Klick-Skript. Im DOM steht ein div mit onclick. Tab springt daran vorbei zum Link „Sprechzeiten ansehen“, mit der Tastatur lässt es sich nicht auslösen. Im Baum hat es keine Rolle, die etwas bedeutet: je nach Browser „generic“, „Abschnitt“ oder gar kein eigener Knoten, nur der Text. Für einen Screenreader ist das Text, keine Schaltfläche. Nicht erfüllt sind 4.1.2 (keine Rolle) und 2.1.1 (nicht erreichbar, nicht auslösbar).
  • C – der Baum stimmt, die Bedienung nicht. Ein div mit role="button" und tabindex="0": Im Baum steht Schaltfläche mit dem Namen „Termin buchen“, Tab erreicht das Element, der Fokusrahmen ist zu sehen. Enter tut aber nichts, und die Leertaste blättert stattdessen die Seite weiter: Es gibt nur ein Klick-Skript und kein Tastaturereignis. 4.1.2 ist erfüllt, 2.1.1 nicht. Der Baum zeigt, was behauptet wird – ob es stimmt, zeigt erst die Bedienung.

Markup:

  • A: <button type="button" onclick="…">Termin buchen</button>
  • B: <div onclick="…">Termin buchen</div>
  • C: <div role="button" tabindex="0" onclick="…">Termin buchen</div>

Alle drei tragen dieselbe CSS-Klasse und dasselbe Klick-Skript. Die Anzeige „Gebucht“ steht bei allen dreien in einem Element mit role="status".

Tab-Reihenfolge: A → Link „Sprechzeiten ansehen“ → C. Der Fokus springt an B vorbei zum Link; B kommt nicht vor.

Automatisch erkennbar? Kaum. axe-core und Lighthouse melden zu keinem der drei Elemente etwas (auf dieser Seite geprüft). Dass ein div auf Klicks reagiert, sieht ein Werkzeug dem Markup nicht sicher an; dass Enter bei C nichts tut, merkt nur, wer es drückt. WAVE ist hier nicht gemessen: Es kennt den Hinweis „Device dependent event handler“ (ein Alert, kein Fehler) für Klick-Skripte an Elementen ohne Tab-Stopp – das träfe B, nicht C. Sieh vor dem Kurs mit WAVE nach, was es zu B zeigt.

Mit Screenreader: B wird im Lesemodus als Text vorgelesen. Manche Screenreader erkennen das Klick-Skript und sagen „anklickbar“; dann lässt sich B dort trotzdem auslösen. Darauf verlassen kann sich niemand, und in der Liste der Schaltflächen fehlt B in jedem Fall.

Verwandte Kriterien: 4.1.2 fragt nach Name, Rolle und Zustand, 2.1.1 nach der Bedienung mit der Tastatur. An B scheitern beide, an C nur 2.1.1.

Baum-Detektive

Im Barrierefreiheitsbaum hat jedes Element eine Rolle (was ist es?), einen Namen (wie heißt es?) und oft einen Zustand (wie steht es gerade?). Genau das sagt ein Screenreader an. Hier liest du diese Angaben selbst ab – und findest heraus, woher der Name kommt.

So prüfst du: Rechtsklick auf das Element → „Untersuchen“ → Bereich „Barrierefreiheit“. In Chrome und Edge steht er rechts im Bereich „Elemente“ (nicht zu sehen? Schau hinter den Doppelpfeil »); unter „Berechnete Eigenschaften“ stehen der Name und seine Quelle. Firefox hat einen eigenen Reiter „Barrierefreiheit“. Safari zeigt Rolle und Name, aber nicht, woher der Name kommt – arbeite dann zu zweit mit einem anderen Browser.

Beispiel: sechs Elemente

  1. Öffnungszeiten
  2. Das Praxisteam am Empfang
  3. Pflichtfeld

Öffnungszeiten der Praxis: Montag bis Freitag, 8 bis 12 Uhr, Dienstag und Donnerstag zusätzlich 15 bis 18 Uhr.

Auflösung zu „Baum-Detektive“
Sechs Elemente: Rolle, Name, Zustand und Quelle des Namens
Nr.ElementRolleNameZustandWoher der Name kommt
1LinklinkÖffnungszeiten–Inhalt
2Lupen-SchaltflächebuttonSuche–aria-label
3Bildimage (in manchen Werkzeugen img)Das Praxisteam am Empfang–alt
4EingabefeldtextboxPostleitzahlerforderlichlabel
5KontrollkästchencheckboxNewsletterangehakt (Screenreader sagen „aktiviert“)label
6Schaltfläche „Mehr“buttonWeitere Filter anzeigenzugeklappt (aria-expanded="false")aria-label – überschreibt den Inhalt „Mehr“

Zusatz: Element 6. Zu sehen ist „Mehr“, der Name lautet „Weitere Filter anzeigen“. Wer per Sprachsteuerung „Klick Mehr“ sagt, findet nichts. Wer den Screenreader nutzt und zugleich sieht, hört andere Worte, als auf dem Bildschirm stehen. Das ist ein Vorgriff auf 2.5.3 Beschriftung (Label) im Namen: Der sichtbare Text muss im Namen enthalten sein – hier ist er es nicht.

Markup:

  1. <a href="#…">Öffnungszeiten</a>
  2. <button aria-label="Suche"><svg aria-hidden="true">…</svg></button>
  3. <img src="…" alt="Das Praxisteam am Empfang">
  4. <label for="plz">Postleitzahl</label><input id="plz" required>
  5. <input type="checkbox" id="nl" checked><label for="nl">Newsletter</label>
  6. <button aria-expanded="false" aria-label="Weitere Filter anzeigen">Mehr</button>

Auf dieser Seite tragen die Kennungen (id, for, href) zusätzlich den Vorsatz demo-baum-, und Element 4 hat autocomplete="postal-code".

Stolperstellen: „Aktiviert“ heißt angehakt, „nicht aktiviert“ heißt nicht angehakt – beides ist etwas anderes als „deaktiviert“ (nicht verfügbar). „Erforderlich“ ist genau genommen eine Eigenschaft, kein Zustand; für das Ablesen im Baum macht das keinen Unterschied. Die Entwicklerwerkzeuge zeigen die Rollen meist englisch; die Tabelle nennt sie so, wie Chrome und Edge sie zeigen. Firefox benennt manche Rollen anders, zum Beispiel „graphic“ für das Bild – gemeint ist dasselbe. Chrome und Edge listen bei jedem Bedienelement weitere Eigenschaften auf, etwa ob es fokussierbar ist; für die Spalte „Zustand“ sind die nicht gemeint. Das Wort „Pflichtfeld“ neben Element 4 ist gewöhnlicher Text und gehört nicht zum Namen des Felds.

Wenn du Element 6 anklickst: Der Zustand wechselt auf aufgeklappt (aria-expanded="true"), darunter erscheinen zwei weitere Kontrollkästchen. Der Name bleibt „Weitere Filter anzeigen“, obwohl die Filter dann schon zu sehen sind – ein Grund mehr, auf das aria-label zu verzichten und den sichtbaren Text sprechend zu machen, etwa „Mehr Filter“.

Automatisch erkennbar? Teilweise – und je nach Werkzeug verschieden. axe-core meldet mit den Standardregeln zu den sechs Elementen nichts. Lighthouse meldet Element 6: Die sichtbare Beschriftung fehlt im Namen. Dieselbe Regel gibt es in axe nur als experimentelle Regel, die ab Werk ausgeschaltet ist. Ein Regelkern, zwei Werkzeuge, zwei Ergebnisse (auf dieser Seite geprüft mit axe-core 4.13 und Lighthouse 13.5).

Die 100-Punkte-Seite

Eine Seite, zwei Prüfungen: erst automatisch, dann von Hand. Vergleiche, was die Werkzeuge melden, mit dem, was du beim Bedienen selbst erlebst.

So prüfst du: Öffne die Seite in einem eigenen Tab. Erstens messen – Lighthouse: Entwicklerwerkzeuge (F12, am Mac Cmd + Wahltaste + I) → Reiter „Lighthouse“ → nur die Kategorie Barrierefreiheit, Gerät „Desktop“ → Analyse starten (Chrome, Edge). Dazu axe DevTools oder WAVE, wenn du die Erweiterung hast. Zweitens bedienen – Maus weglegen, dann Tab, Enter, Leertaste: Menü, Leistungen, Formular. Drittens zuhören – Screenreader einschalten und die Sprechzeiten herausfinden. WAVE und PageSpeed Insights als Website brauchen eine öffentlich erreichbare Adresse; mit einer lokalen Kopie der Übungsseite funktionieren sie nicht.

Beispiel: Praxis am Kranichweg

Website der Praxis am Kranichweg öffnen (neuer Tab)

Zwei Aufgaben für den Durchgang ohne Maus: Fordere einen Rückruf an. Finde heraus, wann die Praxis telefonisch erreichbar ist.

Die Praxis ist erfunden. Die ganze verlinkte Seite ist das Beispiel – dort gibt es keinen Rahmen der Übungsseite, nur oben den Link zurück.

Auflösung zur 100-Punkte-Seite

Was die Werkzeuge sagen: Lighthouse zeigt in der Kategorie Barrierefreiheit 100 Punkte (Desktop und Mobil). axe-core meldet 0 Verstöße – mit den WCAG-Regeln der Stufen A und AA und auch mit eingeschalteten „Best Practices“ – und 2 Stellen „zu prüfen“ (Kontrast auf einem Farbverlauf). Gemessen am 2. Oktober 2026 mit Lighthouse 13.5 in Chromium 141 und axe-core 4.13. Miss vor dem Kurs im eigenen Browser nach: Andere Versionen und Erweiterungen können das Ergebnis verändern. WAVE wurde nicht gemessen.

Was du erlebst: Ohne Maus lässt sich kein Rückruf anfordern, das Menü ist nicht erreichbar, und die Telefonzeiten bekommt niemand zu sehen, der nicht mit dem Mauszeiger über das „i“ fährt. Mit dem Screenreader gibt es keine Sprechzeiten: Sie stehen in einem Bild, das „Bild“ heißt.

Katalog der eingebauten Barrieren (eine Zeile je Barriere):

Eingebaute Barrieren der 100-Punkte-Seite mit Kriterium und Prüfweg
Nr.BarriereKriteriumSo merkst du es
1Der Fokus ist nirgends sichtbar (outline: none für alle Elemente).2.4.7Tab drücken: Nichts zeigt, wo du bist. Bei Links verrät nur die Statuszeile des Browsers das Ziel.
2Hauptmenü: Die Menüpunkte sind span-Elemente ohne Rolle und ohne Tab-Stopp. Die Unterpunkte erscheinen nur, solange der Mauszeiger darüber steht; das aufgeklappte Untermenü verdeckt Inhalt und lässt sich nicht mit Esc schließen.2.1.1, 4.1.2, 1.4.13Tab springt vom Signet direkt in den Inhalt. Im Baum stehen „Praxis“, „Leistungen“, „Service“ als Text; die acht Unterpunkte gibt es dort nicht.
3Die Telefonzeiten stehen in einer Sprechblase, die nur bei Mausberührung des „i“ erscheint. Sie verdeckt das Bild darunter und lässt sich nicht mit Esc schließen.2.1.1, 1.4.13Mit der Tastatur und mit dem Screenreader ist die Auskunft nicht zu bekommen. Mit der Maus: Esc drücken – die Blase bleibt.
4Alle fünf Bilder haben den Alternativtext „Bild“: Signet, Sprechzeiten, Team, Zierlinie, Telefonhörer.1.1.1; bei Signet und Telefonhörer auch 2.4.4Screenreader: „Bild“ – fünfmal. Die Sprechzeiten fehlen damit ganz, die Zierlinie müsste alt="" haben, und zwei Links heißen „Bild“.
5Die Sprechzeiten sind ein Bild eines Textes.1.4.5Der Text lässt sich nicht markieren, nicht umfärben und reagiert nicht auf geänderte Textabstände. Rechtsklick: Der Browser bietet an, ein Bild zu speichern.
6Zwischenüberschriften gibt es nur optisch: fett und groß gesetzte div-Elemente. Die einzige echte Überschrift ist der Name der Praxis.1.3.1Überschriftenliste des Screenreaders oder Baum: ein Eintrag.
7Der Satz „Termine nur nach Vereinbarung …“ steht hellgrün auf einem hellen Farbverlauf, Kontrast etwa 1,5:1 bis 1,7:1.1.4.3Mit Pipette und Kontrastrechner messen. axe legt die Stelle unter „zu prüfen“ ab, weil es den Hintergrund nicht bestimmen kann; Lighthouse zählt sie nicht.
8Der Link „mehr“ steht allein in einem eigenen Absatz.2.4.4Linkliste des Screenreaders: „mehr“. Im selben Absatz steht nichts, was das Ziel erklärt.
9Die drei Aufklapper unter „Leistungen“ sind div-Elemente mit role="button" und tabindex="0", reagieren aber nur auf Klick. Ein aria-expanded gibt es nicht.2.1.1, 4.1.2Tab erreicht sie, Enter tut nichts, die Leertaste blättert nur die Seite weiter. Im Baum: Schaltfläche ohne Zustand. Das Plus- oder Minuszeichen aus dem CSS landet im Namen.
10Formular: Die sichtbaren Beschriftungen „Name“, „Telefon“, „Worum geht es?“ sind nicht mit den Feldern verknüpft. Die Felder heißen stattdessen „Feld 1“, „Feld 2“, „Feld 3“ (aria-label).1.3.1, 2.5.3Screenreader: „Feld 2, Eingabefeld“. Sprachsteuerung: „Klick Telefon“ findet nichts. Ein Name ist vorhanden – deshalb schweigen die Werkzeuge, und 4.1.2 ist formal erfüllt.
11Fokusreihenfolge im Formular: „Worum geht es?“ → Kästchen → Telefon → Name. Zu sehen ist die Reihenfolge Name, Telefon, „Worum geht es?“, Kästchen (per CSS order umsortiert).2.4.3Etwas eintippen und Tab drücken: Die Schreibmarke springt von unten nach oben.
12Pflichtfelder sind nur an der roten Schrift zu erkennen.1.4.1 (Failure F81)Seite in Graustufen ansehen: Der Hinweis „Rot beschriftete Felder …“ hilft dann nicht mehr. Kein required, kein Wort „Pflichtfeld“.
13Das Kästchen „Ich bin mit dem Rückruf einverstanden“ ist ein div mit role="checkbox". Es reagiert nur auf Klick, aria-checked bleibt immer false. Sein Name lautet „Kästchen“; der sichtbare Text daneben ist nicht verknüpft.2.1.1, 4.1.2, 1.3.1, 2.5.3Die Leertaste hakt nichts an, sie blättert die Seite weiter. Nach einem Mausklick ist der Haken zu sehen, im Baum steht weiter „nicht angehakt“.
14„Absenden“ ist ein div ohne Rolle und ohne Tab-Stopp.2.1.1, 4.1.2Tab springt vom Feld „Name“ in den Seitenfuß. Ohne Maus lässt sich das Formular nicht absenden.
15Fehler zeigt nur ein roter Rahmen um die leeren Pflichtfelder. Es gibt keinen Text und kein aria-invalid.1.4.1 (F81), 3.3.1Mit der Maus leer absenden. Das Rot und das Grau der Rahmen sind fast gleich hell – in Graustufen ist kein Unterschied zu sehen.
16Die Bestätigung „Danke. Wir rufen dich … zurück.“ erscheint ohne Statusrolle.4.1.3Mit Screenreader und Maus absenden: Angesagt wird nichts.
17Die Felder für Name und Telefon geben ihren Zweck nicht an (kein autocomplete).1.3.5Feld untersuchen: Das Attribut fehlt; der Browser bietet keine gespeicherten Angaben an.

Warum bleibt das alles unentdeckt? Die Werkzeuge prüfen, ob etwas vorhanden und formal gültig ist: ein Alternativtext, ein Name, eine erlaubte Rolle, eine Hauptregion, eine Seitensprache. Ob der Alternativtext passt, ob der Name stimmt, ob ein Element auf die Tastatur reagiert und ob eine Reihenfolge Sinn ergibt, entscheidet kein Werkzeug. In Ordnung sind auf dieser Seite tatsächlich: Seitentitel, Sprache der Seite, die Regionen Kopf, Navigation, Hauptinhalt und Fuß, die Größe der Klickziele und der Kontrast aller übrigen Texte. Auch der Link „hier“ im Seitenfuß ist kein Verstoß gegen 2.4.4: Der Satz, in dem er steht, erklärt sein Ziel.

Zum Streitfall „100 Punkte als Abnahme?“: „Ja, 100 Punkte plus ein Tastaturdurchgang reichen“ (A) trägt nicht: Der Tastaturdurchgang deckt nur wenige Kriterien ab; Alternativtexte, Kontrast in Bildern, Untertitel, Fehlermeldungen und Zeitlimits bleiben ungeprüft. „Als Abnahmekriterium ungeeignet“ (B) trifft zu: Konformität wird je Kriterium bewertet, nicht über eine Punktzahl. „Nur als Eingangsschwelle“ (C) ist vertretbar, wenn man es genauer fasst: 100 in Lighthouse heißt nicht einmal „keine automatisch erkennbaren Fehler“, weil Lighthouse nur einen Teil der axe-Regeln nutzt. Sinnvoller als Schwelle ist „null Verstöße in axe mit festgelegtem Regelsatz“; abgenommen wird nach einer Prüfung aller Kriterien.

Zusatz – Zählweise, falls du die Seite auch für „Was hat die Maschine übersehen?“ nimmst: 17 Zeilen; axe findet keine davon als Verstoß und eine (Zeile 7) als „zu prüfen“ – Anteil gefunden: 0 von 17. Im Kurs läuft diese Aufgabe an der Beispielsite vom Morgen mit deren eigenem Fehlerkatalog; die 100-Punkte-Seite gehört zum Streitfall.

Prinzip 1: Wahrnehmbar

1.1.1 Nicht-Text-Inhalt

Stufe A, Hintergrund beim W3C: Understanding 1.1.1 (englisch)

Alles, was kein Text ist – Bilder, Symbole, Diagramme, Grafik-Schaltflächen –, braucht eine Textalternative, die denselben Zweck erfüllt. Reine Dekoration muss so eingebunden sein, dass Hilfsmittel sie übergehen können.

So prüfst du: Lies bei jedem Bild den Namen im Barrierefreiheitsbaum (Rechtsklick → Untersuchen, dann der Bereich „Barrierefreiheit“; in den Webinformationen von Safari der Abschnitt „Bedienungshilfen“) oder lass dir die Alternativtexte von WAVE einblenden. Mit dem Screenreader springst du von Grafik zu Grafik: NVDA G, VoiceOver VO + Cmd + G. Frage dich bei jedem Bild: Was fehlt, wenn es wegfällt? Hintergrundbilder und Symbolschriften findest du nur im Bereich „Stile“ oder indem du die Stile abschaltest. Ohne Installation: Rechtsklick auf das Bild → Untersuchen und das alt-Attribut lesen.

Beispiel A

Geräte im Foyer – Stand heute
  • Rückgabeautomat
  • Kopierer
  • Buchscanner
  • Kassenautomat

Beispiel B

Geräte im Foyer – Stand heute
  • In Betrieb: Rückgabeautomat
  • Außer Betrieb: Kopierer
  • In Betrieb: Buchscanner
  • Außer Betrieb: Kassenautomat

Beispiel C: Galerie – zehn Stellen von der Website eines Stadtwerks

Stelle 1 – Kopfbereich
logo

Kundenservice: 0000 555 010

Stelle 2 – Suche
Stelle 3 – Zwischen zwei Abschnitten

Wir liefern Strom, Wärme und Wasser für die Haushalte in Beispielstadt.

blaue Welle als Trennlinie

Unser Kundenzentrum am Marktplatz ist montags bis freitags geöffnet.

Stelle 4 – Diagramm im Ratgeber

So verteilt sich der Stromverbrauch eines Haushalts mit drei Personen über das Jahr. Je nach Jahreszeit schwankt er deutlich.

Stromverbrauch im Jahresverlauf nach Quartalen
Diagramm
Stelle 5 – Ansprechpartnerin
Porträt von Anna Beispiel

Anna Beispiel Kundenberatung Tarife Telefon 0000 555 012

Stelle 6 – Produktkarte
Tarif Öko Plus
Tarif Öko Plus

Ökostrom aus der Region, monatlich kündbar.

Stelle 7 – Kontaktformular, letzter Schritt
CAPTCHA
Stelle 8 – Titelbild der Startseite

Das Angebot gilt für alle, die bis zum 31. Dezember neu zu den Stadtwerken Beispielstadt kommen.

Stelle 9 – Fußbereich

Stadtwerke Beispielstadt · Am Wasserturm 1

Stelle 10 – Kundenbewertung

„Der Wechsel war in zehn Minuten erledigt, und die Abrechnung verstehe ich jetzt endlich.“

Kundin aus Beispielstadt

Beispiel D: „Unsere Beratung“, Fassung 1

Unsere Beratung

Fragen zu Tarif, Abschlag oder Umzug? Unser Team ist montags bis freitags von 8 bis 18 Uhr für Sie da – am Telefon, per E-Mail oder im Kundenzentrum am Marktplatz.

Beispiel E: „Unsere Beratung“, Fassung 2

Beraterin am Telefon
Unsere Beratung

Fragen zu Tarif, Abschlag oder Umzug? Unser Team ist montags bis freitags von 8 bis 18 Uhr für Sie da – am Telefon, per E-Mail oder im Kundenzentrum am Marktplatz.

Beispiel F: Sonderformen und Gegenstücke – sieben Stellen

Stelle 1 – Ausstattung des Lesesaals

Lesesaal im 1. Obergeschoss

Stelle 2 – Link mit Symbol
Stelle 3 – Bewertung eines Hörbuchs

„Nebel über dem Kanal“ – so bewerten es unsere Lesenden:

Stelle 4 – Sicherheitsabfrage im Kontaktformular
Sicherheitsabfrage: Zeichen aus dem Bild eingeben

Bild nicht lesbar? Die Zeichen zum Anhören:

Stelle 5 – Banner auf der Startseite

Ausweis online verlängern – in zwei Minuten erledigt

Stelle 6 – Auslastung des Lesesaals
Auslastung des Lesesaals: 8 von 40 Plätzen belegt
Stelle 7 – Diagramm im Ratgeber des Stadtwerks

So verteilt sich der Stromverbrauch eines Haushalts mit drei Personen über das Jahr. Je nach Jahreszeit schwankt er deutlich.

Stromverbrauch im Jahresverlauf nach Quartalen
Balkendiagramm: Der Verbrauch ist im 1. und 4. Quartal am höchsten und im 3. Quartal am niedrigsten. Alle Werte stehen in der Tabelle unter dem Diagramm.
Stromverbrauch je Quartal in Kilowattstunden (kWh)
QuartalkWh
1. Quartal1.150
2. Quartal780
3. Quartal640
4. Quartal1.030

Stelle 6: Betätige „Anzeige aktualisieren“ und prüfe die Stelle danach noch einmal. Die Stimme in der Aufnahme von Stelle 4 ist synthetisch erzeugt.

Auflösung zu 1.1.1
  • Beispiel A – nicht erfüllt. Haken und Warndreieck sagen, welches Gerät läuft und welches nicht – diese Information steht nur im Bild. Mit alt="" sind die Symbole für den Screenreader unsichtbar: Er liest vier Gerätenamen ohne Zustand. Wer deshalb zum Kopierer läuft, steht vor einem defekten Gerät. Ein leeres alt ist nur richtig, wenn das Bild nichts beiträgt oder dasselbe direkt daneben als Text steht.
  • Beispiel B – erfüllt. Dieselben Symbole, jetzt mit „In Betrieb:“ und „Außer Betrieb:“ als Alternativtext. Die Alternative nennt nicht das Aussehen („grüner Haken“), sondern die Bedeutung.
  • Beispiel C – Galerie. Acht Stellen nicht erfüllt, zwei erfüllt:
    1. Stelle 1 – funktional, nicht erfüllt. Das Logo ist ein Link zur Startseite, und der Firmenname steht nur im Bild. „logo“ nennt weder Namen noch Ziel (Failure F30: Platzhalter statt Alternative). Verletzt außerdem 2.4.4 (der Zweck des Links ist nicht bestimmbar) und 2.5.3 (sichtbar steht „Stadtwerke Beispielstadt“, im Namen steht „logo“). Besser: alt="Stadtwerke Beispielstadt – Startseite".
    2. Stelle 2 – funktional, nicht erfüllt. Das Bild in der Schaltfläche hat kein alt-Attribut (F65), die Schaltfläche damit keinen Namen. Der Screenreader sagt „Schalter“ oder liest den Dateinamen. Verletzt außerdem 4.1.2. Besser: alt="Suchen" – der Name sagt, was passiert, nicht wie es aussieht („Lupe“).
    3. Stelle 3 – dekorativ, nicht erfüllt, geringe Schwere. Die Zierlinie trägt nichts bei, wird aber als „blaue Welle als Trennlinie“ vorgelesen (F39). Besser: alt="" oder als CSS-Hintergrund.
    4. Stelle 4 – komplex, nicht erfüllt. „Diagramm“ sagt, dass da ein Diagramm ist, aber nicht, was es zeigt; der Absatz darüber nennt die Zahlen auch nicht. Besser: eine kurze Alternative mit der Kernaussage („Balkendiagramm: Der Verbrauch ist im 1. und 4. Quartal am höchsten“) und die Werte als Text oder Tabelle direkt darunter: 1. Quartal 1.150 kWh, 2. Quartal 780 kWh, 3. Quartal 640 kWh, 4. Quartal 1.030 kWh – so umgesetzt in Beispiel F, Stelle 7.
    5. Stelle 5 – informativ, erfüllt. Der Alternativtext benennt, wer zu sehen ist. Weil der Name direkt daneben steht, wäre auch alt="" vertretbar – die Doppelansage ist ein Verbesserungshinweis, kein Verstoß.
    6. Stelle 6 – funktional, erfüllt. Beide Links haben einen Namen, der das Ziel nennt. Unschön: Zwei Links hintereinander führen zum selben Ziel, mit der Tastatur sind das zwei Stopps mit derselben Ansage. Verbesserung: ein gemeinsamer Link um Bild und Überschrift, das Bild mit alt="" (Technik H2).
    7. Stelle 7 – CAPTCHA, nicht erfüllt. „CAPTCHA“ benennt den Zweck nur für Eingeweihte, und es gibt keine Variante für einen anderen Sinn. Wer das Bild nicht sehen kann, kommt nicht weiter. Besser: alt="Sicherheitsabfrage: Zeichen aus dem Bild eingeben" und zusätzlich eine Hörfassung oder ein anderes Verfahren ohne Bild – siehe Beispiel F, Stelle 4.
    8. Stelle 8 – informativ, nicht erfüllt. „Jetzt wechseln und Bonus sichern“ steht nur im Hintergrundbild (F3). Im Barrierefreiheitsbaum gibt es an dieser Stelle nichts; schaltest du die Stile ab, verschwindet die Aussage. Verletzt außerdem 1.4.5: Der Satz ließe sich ohne Weiteres als Text setzen. Besser: der Satz als echter Text über einem Bild ohne Schrift – das behebt beides.
    9. Stelle 9 – funktional, nicht erfüllt. Drei Links, die nur aus einem SVG-Symbol bestehen: Rolle Link, Name leer. Der Screenreader sagt dreimal „Link“. Verletzt außerdem 2.4.4 und 4.1.2. Besser: am Link ein aria-label oder unsichtbarer Text mit dem Namen des Netzwerks, das SVG mit aria-hidden="true".
    10. Stelle 10 – informativ, nicht erfüllt. Die Sterne sind Zeichen einer Symbolschrift aus dem Unicode-Bereich für private Nutzung. Screenreader lesen nichts oder Unsinn; die Bewertung „4 von 5“ fehlt. Besser: Text „4 von 5 Sternen“, sichtbar oder für Screenreader, bzw. role="img" mit aria-label (Technik ARIA24) – siehe Beispiel F, Stelle 3.
  • Beispiel D – erfüllt (Streitfall). Das Foto neben „Unsere Beratung“ zeigt irgendeine Person mit Headset. Es trägt nichts bei, was nicht in Überschrift und Text steht – also Dekoration, und alt="" ist genau richtig. Stimmung zu beschreiben ist eine redaktionelle Entscheidung, keine Pflicht. Ebenso vertretbar: „erfüllt nur, wenn das Foto nichts beiträgt“ – die Einordnung liegt bei den Autorinnen und Autoren.
  • Beispiel E – formal nicht erfüllt, geringe Schwere. Kursposition: Ist das Bild rein dekorativ, müssen Hilfsmittel es übergehen können (F38); ein beschreibender Text wie „Beraterin am Telefon“ an einem Schmuckbild ist dann formal ein Verstoß (F39), behindert aber kaum – wie die Zierlinie in Stelle 3. Anders, wenn das Foto etwas aussagt, etwa weil es die tatsächliche Beraterin zeigt: Dann ist ein kurzer Text mit Name oder Funktion richtig. Immer nicht erfüllt: gar kein alt-Attribut (F65) oder ein Dateiname (F30).
  • Beispiel F – Sonderformen und Gegenstücke. Die Stellen 1 bis 5 und 7 sind erfüllte Gegenstücke zu den Stellen 4 und 7 bis 10 der Galerie, Stelle 6 ist nicht erfüllt:
    1. Stelle 1 – erfüllt. Inline-SVG mit role="img" und aria-label: Im Baum steht „Grafik: WLAN“ und „Grafik: Steckdose an jedem Platz“. Ohne role="img" und Namen wäre ein Inline-SVG für Screenreader je nach Browser gar nichts oder eine namenlose Gruppe.
    2. Stelle 2 – erfüllt. Das Kalendersymbol schmückt nur den Linktext; mit aria-hidden="true" übergehen Hilfsmittel es. Der Link heißt „Veranstaltungskalender“.
    3. Stelle 3 – erfüllt. Dieselbe Symbolschrift wie in Stelle 10 der Galerie, aber in einem Element mit role="img" und aria-label="4 von 5 Sternen".
    4. Stelle 4 – erfüllt. Der Alternativtext nennt den Zweck, ohne die Lösung zu verraten – das erlaubt die CAPTCHA-Ausnahme. Dazu gibt es dieselbe Aufgabe für einen anderen Sinn, hier zum Anhören. Geht es um eine Anmeldung, kommt 3.3.8 hinzu.
    5. Stelle 5 – erfüllt. Der Werbesatz ist echter Text im HTML; das Hintergrundbild zeigt nur ein Muster. Ohne Stile bleibt der Satz stehen.
    6. Stelle 6 – nicht erfüllt. Beim Aktualisieren wechselt das Bild (8, dann 23, dann 37 von 40 Plätzen), der Alternativtext bleibt bei „8 von 40 Plätzen belegt“ stehen (F20). Wer das Bild nicht sieht, bekommt eine veraltete Auskunft. Der Alternativtext muss mit dem Bild wechseln.
    7. Stelle 7 – komplex, erfüllt. Dasselbe Diagramm wie in Stelle 4 der Galerie. Der Alternativtext nennt die Kernaussage und sagt, wo die Einzelwerte stehen; direkt darunter folgt eine Datentabelle mit allen vier Werten (Technik G74). Wer das Bild nicht sieht, bekommt dieselbe Information – und alle anderen können die Zahlen markieren und vergrößern.

Automatisch erkennbar? Teilweise. axe meldet in der Galerie Stelle 2 (Bild ohne alt, Schaltfläche ohne Namen) und Stelle 9 (drei Links ohne Namen) – sonst nichts. Ein vorhandener, aber unpassender Alternativtext („logo“, „Diagramm“, „CAPTCHA“), das leere alt an den Zustandssymbolen in Beispiel A, das Hintergrundbild, die Symbolschrift und der veraltete Text in Beispiel F rutschen durch. Werkzeuge finden fehlende Alternativen, nicht falsche.

Grenzfall: Ein Emoji im Text ist Text, kein Nicht-Text-Inhalt – der Screenreader liest seinen Namen. Als Aufzählungszeichen oder in langen Reihen ist das eine Frage der Verständlichkeit, meist kein Verstoß gegen 1.1.1. Und: Ein title-Attribut am Bild allein ist keine verlässliche Textalternative.

Verwandte Kriterien: 4.1.2 verlangt den Namen von Bedienelementen – bei Grafik-Schaltflächen und Symbol-Links trifft ein Befund oft beide Kriterien; im Bericht steht er beim Hauptkriterium, das andere wird als Querverweis genannt. 1.4.5 fragt, ob Text überhaupt als Bild vorliegen darf; 1.1.1 nur, ob das Bild eine Alternative hat. Für Audio und Video verlangt 1.1.1 lediglich eine beschreibende Kennzeichnung – den Rest regeln 1.2.1 bis 1.2.5.

1.2.1 Reine Audio- und Videoinhalte (aufgezeichnet)

Stufe A, Hintergrund beim W3C: Understanding 1.2.1 (englisch)

Aufgezeichnete Medien, die nur aus Ton bestehen (Podcast, Hörbeitrag), brauchen eine Textfassung mit demselben Inhalt. Aufgezeichnete Medien, die nur aus Bild bestehen (stummes Video, Animation), brauchen eine Textfassung oder eine Tonspur, die das Gezeigte wiedergibt.

So prüfst du: Von Hand. Spiel das Medium ab: Hat es nur Ton oder nur Bild? Bei einem Video ohne Tonspur fehlt der Lautstärkeregler des Players oder er ist ausgegraut. Such dann in der Nähe nach einer Textfassung (Strg + F, am Mac Cmd + F: „Transkript“, „Textfassung“) und vergleiche: Steht dort alles, was zu hören oder zu sehen ist – auch wer spricht und welche Geräusche etwas bedeuten?

Beispiel A: Hörbeitrag

Hörtipp der Woche

Jede Woche stellt das Team der Stadtbücherei Lindenau ein Hörbuch vor.

Audio, 31 Sekunden

Alle Stimmen in den Medien dieser Übungsseite sind synthetisch erzeugt, die Bilder gezeichnet. Nichts startet von selbst.

Beispiel B: Hörbeitrag

Hörtipp der Woche

Jede Woche stellt das Team der Stadtbücherei Lindenau ein Hörbuch vor.

Audio, 31 Sekunden

Transkript des Hörtipps

[Erkennungsmelodie]

Sprecherin: Hörtipp der Stadtbücherei Lindenau. Diese Woche empfehlen wir das Hörbuch: Nebel über dem Kanal. Ein Krimi für lange Herbstabende, gelesen von Mitgliedern unseres Lesekreises. Hier eine Hörprobe.

Vorleser: Der Nebel kam ohne Vorwarnung. Und mit ihm das Klopfen an der Tür.

Sprecherin: Das Hörbuch steht im Erdgeschoss, Regal H 3. Ihr könnt es vier Wochen lang ausleihen. Viel Spaß beim Hören!

[Erkennungsmelodie]

Beispiel C: Video ohne Ton

Medien zurückgeben am Automaten

Video ohne Ton, 26 Sekunden

Das zeigt das Video

Der Rückgabeautomat steht im Foyer. So gibst du ein Buch zurück:

  1. Tippe auf dem Bildschirm des Automaten auf die Schaltfläche „Rückgabe“.
  2. Leg das Buch flach in das Fach unter dem Bildschirm, mit dem Strichcode nach oben. Der Automat zieht es ein.
  3. Warte, während auf dem Bildschirm „Medium wird gebucht“ steht. Ist die Rückgabe gebucht, erscheint ein Haken, und das Lämpchen neben dem Fach leuchtet grün.
  4. Nimm die Quittung aus dem Schlitz unten am Automaten.

Beispiel D: Video ohne Ton

Medien zurückgeben am Automaten

Video ohne Ton, 26 Sekunden

Beispiel E: Meldung mit Aufnahme

Bücherei am 20. November geschlossen

Am Freitag, 20. November, bleibt die Stadtbücherei Lindenau wegen einer Betriebsversammlung geschlossen. Der Rückgabeautomat im Foyer ist wie gewohnt in Betrieb. Leihfristen, die an diesem Tag enden, verlängern sich automatisch um einen Tag.

Diese Meldung zum Anhören – vorgelesen wird genau der Text oben (Audio, 20 Sekunden):

Auflösung zu 1.2.1
  • Beispiel A – nicht erfüllt. Eine reine Tonaufnahme ohne Textfassung. Wer nicht oder schlecht hört, erfährt weder den Titel des Hörbuchs noch, wo es steht (Regal H 3) und wie lange man es ausleihen kann. Die Überschrift „Hörtipp der Woche“ kennzeichnet die Aufnahme nur – das genügt für 1.1.1, nicht für 1.2.1.
  • Beispiel B – erfüllt. Dieselbe Aufnahme mit Transkript direkt darunter: alles Gesprochene, wer spricht, und die Erkennungsmelodie als Geräusch (Technik G158). Vergleiche Wort für Wort – ein Transkript, das zusammenfasst oder Teile auslässt, wäre keine gleichwertige Alternative.
  • Beispiel C – erfüllt. Das Video hat keine Tonspur. Die Liste darunter beschreibt alle vier Schritte so, dass man die Rückgabe auch ohne das Bild schafft (G159). Der zweite zulässige Weg wäre eine Tonspur, die das Gezeigte beschreibt (G166).
  • Beispiel D – nicht erfüllt. Dasselbe stumme Video ohne Text und ohne Tonspur. Der Screenreader meldet einen Videoplayer und die Überschrift, aber keinen der vier Schritte. Die eingeblendeten Schrittzeilen im Video sind Pixel, kein Text. Blinde Nutzende erfahren nicht, wie die Rückgabe geht.
  • Beispiel E – erfüllt (Ausnahme). Die Aufnahme ist selbst eine Alternative: Sie liest genau den Text vor, der darüber steht, und ist so gekennzeichnet. Dann braucht sie kein eigenes Transkript. Die Ausnahme gilt nur, wenn die Aufnahme nicht mehr Information enthält als der Text – nenne sie im Bericht und prüfe das durch Anhören.

Automatisch erkennbar? Nein. axe meldet zu den beiden Videos nur einen Punkt „von Hand zu prüfen“ (video-caption), zu den Audiodateien nichts. Ob es eine Textfassung gibt und ob sie stimmt, sieht kein Werkzeug.

Grenzfall: Ein stummes Hintergrundvideo im Kopfbereich, das nur Stimmung erzeugt, trägt keine Information: keine Alternative nach 1.2.1, es gilt als Dekoration im Sinn von 1.1.1. Läuft es länger als 5 Sekunden, muss es sich aber anhalten lassen (2.2.2). Gegenfall: Ein stummes Video, das zeigt, wie man etwas bedient – wie hier –, ist Information.

Verwandte Kriterien: 1.2.1 gilt nur für Medien, die ausschließlich Ton oder ausschließlich Bild haben. Video mit Ton fällt unter 1.2.2, 1.2.3 und 1.2.5. Die Player selbst müssen mit der Tastatur bedienbar sein (2.1.1); Ton, der von selbst startet, wäre ein Fall für 1.4.2.

1.2.2 Untertitel (aufgezeichnet)

Stufe A, Hintergrund beim W3C: Understanding 1.2.2 (englisch)

Aufgezeichnete Videos mit Ton brauchen Untertitel für den gesamten Ton: alles Gesprochene, dazu wer spricht, wenn man es nicht sieht, und Geräusche, die etwas bedeuten.

So prüfst du: Von Hand. Ton aus, Untertitel an – im Player über die Untertitel-Schaltfläche (je nach Browser „CC“, eine Sprechblase oder das Menü mit den drei Punkten). Verstehst du alles? Dann dieselbe Stelle mit Ton gegenhören: Fehlt etwas, kommt es zur richtigen Zeit, erkennst du, wer spricht, stehen Geräusche da? Im Code zeigt <track kind="captions"> nur, dass es eine Spur gibt – nicht, ob sie stimmt. Die Datei der Spur kannst du im Netzwerk-Bereich der Entwicklerwerkzeuge öffnen und lesen.

Beispiel A

Einladung zur Langen Lesenacht

Video mit Ton, 37 Sekunden. Dieses Video mit Audiodeskription ansehen

Die Untertitel schaltest du im Player ein; zum Lesen öffnest du das Video am besten im Vollbild. Untertitelspuren lädt der Browser nur, wenn die Seite über einen Webserver läuft – nicht, wenn du die Datei per Doppelklick öffnest. Alle Stimmen sind synthetisch erzeugt, die Bilder gezeichnet.

Auflösung zu 1.2.2
  • Beispiel A – erfüllt. Die Untertitel geben alles Gesprochene wieder, laufen synchron, nennen bei jedem Wechsel, wer spricht („Jana Winter:“, „Tom Berger:“), und enthalten das Geräusch, auf das sich der Dialog bezieht: „[Gong ertönt]“ bei 0:21. Die Namen sind nötig, weil zwischen 0:15 und 0:33 niemand im Bild ist. Die Spur ist zuschaltbar (Technik G87); eingebrannte Untertitel wären ebenso zulässig (G93).
  • Beispiel B – nicht erfüllt. Dasselbe Video mit einer Spur, wie sie eine ungeprüfte automatische Erkennung liefert. Lösungsschlüssel zum Untertitel-Check:
    • Nicht synchron: Alle Untertitel kommen rund 2 Sekunden zu spät. Der erste Satz fällt bei 0:03, zu lesen ist er ab 0:05.
    • Nicht vollständig: Der Schlusssatz „Wir freuen uns auf euch!“ (0:34) fehlt ganz.
    • Geräusch fehlt: Der Gong bei 0:21 steht nicht da. Ohne ihn ergibt „hört ihr das“ keinen Sinn (Failure F8).
    • Sprecher nicht erkennbar: Kein Hinweis auf Sprecherwechsel; die Zeilen laufen über die Wechsel hinweg („wo das seht ihr hier hört ihr“, ab 0:17).
    • Erkennungsfehler: „lindau“ statt „Lindenau“ (0:05), „gruß geschichten“ statt „Gruselgeschichten“ (0:10), „kong“ statt „Gong“ (0:25), „meldet auch“ statt „Meldet euch“ (0:28). Dazu keine Satzzeichen, keine Großschreibung.
    Wer nicht hört, bekommt den Ortsnamen falsch, das Programm entstellt und weiß nicht, worauf sich die Frage nach dem Gong bezieht.

Automatisch erkennbar? Nein. axe meldet zu beiden Videos nichts: Die Regel video-caption schaut nur, ob es ein track-Element mit kind="captions" gibt – und das haben beide. Fehlt es, erscheint das Video unter „von Hand zu prüfen“ (siehe 1.2.4, Beispiel B). Ob die Untertitel stimmen, liest kein Werkzeug.

Grenzfall: Automatische Untertitel erfüllen 1.2.2 nur, wenn sie redaktionell geprüft und korrigiert sind. Ist das Video über einen fremden Player eingebettet, der Untertitel könnte, aber keine zeigt, bleibt es nicht erfüllt: Verantwortlich ist, wer das Video auf der eigenen Seite anbietet. Keine Untertitel braucht ein Video, das selbst eine gekennzeichnete Alternative zu einem Text auf der Seite ist und nicht mehr enthält als dieser (sonst F74, F75).

Verwandte Kriterien: Untertitel sind für Menschen, die den Ton nicht hören. Für Menschen, die das Bild nicht sehen, gelten 1.2.3 und 1.2.5 – deshalb führt unter beiden Videos ein Link zur Fassung mit Audiodeskription. Live-Videos: 1.2.4. Reines Audio oder stummes Video: 1.2.1. Die Bedienung des Players prüfst du mit 2.1.1 und 4.1.2.

1.2.3 Audiodeskription oder Medienalternative (aufgezeichnet)

Stufe A, Hintergrund beim W3C: Understanding 1.2.3 (englisch)

Zeigt ein aufgezeichnetes Video mit Ton etwas Wichtiges, das im Ton nicht vorkommt, braucht es eine Audiodeskription oder eine Medienalternative – einen Volltext, der Gesprochenes und Gezeigtes in der richtigen Reihenfolge wiedergibt. Auf Stufe A genügt eines von beiden.

So prüfst du: Von Hand. Augen zu oder das Fenster verdecken, Ton an: Fehlt dir etwas Wichtiges – eingeblendeter Text, Namen, eine Handlung? Wenn ja: Gibt es eine Fassung mit Audiodeskription oder direkt beim Video einen Volltext, der auch das Gezeigte enthält? Lies den Text gegen das Video: Ein Transkript, das nur das Gesprochene enthält, reicht nicht.

Beispiel A

Einladung zur Langen Lesenacht

Video mit Ton, 37 Sekunden, mit Untertiteln

Untertitelspuren lädt der Browser nur, wenn die Seite über einen Webserver läuft – nicht, wenn du die Datei per Doppelklick öffnest. Alle Stimmen sind synthetisch erzeugt, die Bilder gezeichnet.

Beispiel B

Einladung zur Langen Lesenacht

Video mit Ton, 37 Sekunden, mit Untertiteln

Textfassung des Videos: was zu sehen und zu hören ist
  1. Vor einem Nachthimmel mit Mondsichel erscheint die Schrift „Lange Lesenacht – Stadtbücherei Lindenau“.
  2. Eine Frau mit Dutt steht neben einem Bücherstapel. Einblendung: „Jana Winter, Leitung der Stadtbücherei“. Jana Winter: „Hallo aus der Stadtbücherei Lindenau. Am Freitag laden wir euch zur Langen Lesenacht ein.“
  3. Ein Mann mit Brille leuchtet mit einer Taschenlampe ins Dunkel. Einblendung: „Tom Berger, Veranstaltungen“. Tom Berger: „Wir lesen Gruselgeschichten vor, und zwar bei Taschenlampenlicht.“
  4. Jana Winter, nicht im Bild: „Wann und wo? Das seht ihr hier.“ Dazu erscheint eine Tafel: „Freitag, 13. November · 19:00 Uhr · Raum 2.14 · 2. Obergeschoss“.
  5. Ein Schlägel schlägt einen großen Gong an. Der Gong ertönt. Tom Berger, nicht im Bild: „Hört ihr das? Sobald der Gong ertönt, geht es los.“
  6. Jana Winter, nicht im Bild: „Die Plätze sind begrenzt. Meldet euch bitte bis Mittwoch an.“ Dazu erscheint eine Tafel: „Anmeldung bis Mittwoch, 11. November · Telefon 0000 123456 · Eintritt frei“.
  7. Jana Winter und Tom Berger stehen nebeneinander unter dem Schriftzug „Lange Lesenacht“. Tom Berger: „Wir freuen uns auf euch!“
Auflösung zu 1.2.3
  • Beispiel A – nicht erfüllt. Nur im Bild, nie im Ton: Datum, Uhrzeit und Raum (0:15), Anmeldefrist, Telefonnummer und „Eintritt frei“ (0:27), dazu Namen und Funktionen der beiden Sprechenden. Jana Winter sagt sogar „Das seht ihr hier“. Wer das Bild nicht sieht, weiß am Ende, dass es eine Lesenacht gibt – aber nicht, wann, wo und wie man sich anmeldet. Es gibt weder Audiodeskription noch Textfassung. Die Untertitel helfen hier nicht: Sie geben den Ton wieder, nicht das Bild. Verletzt außerdem 1.2.5.
  • Beispiel B – erfüllt (Stufe A). Unter dem Video steht eine Medienalternative: ein Volltext, der in der Reihenfolge des Videos sagt, was zu sehen und was zu hören ist, einschließlich aller eingeblendeten Angaben. Das genügt für 1.2.3. Für 1.2.5 auf Stufe AA genügt es nicht – dort ist dieses Beispiel nicht erfüllt. Im Bericht: 1.2.3 erfüllt, 1.2.5 nicht erfüllt.

Der zweite Weg, 1.2.3 zu erfüllen, ist die Audiodeskription. Die Fassung dazu steht bei 1.2.5, Beispiel B; sie erfüllt beide Kriterien.

Automatisch erkennbar? Nein. axe meldet zu beiden Videos nichts. Kein Werkzeug weiß, was im Bild zu sehen ist und ob es im Ton vorkommt.

Stolperstelle: Transkript ist nicht gleich Medienalternative. Transkript = was gesagt wird. Medienalternative = was gesagt und gezeigt wird.

Grenzfall: Spricht nur eine Person frontal in die Kamera und wird nichts eingeblendet, enthält das Bild nichts, was im Ton fehlt – dann ist weder Audiodeskription noch Textfassung nötig (siehe 1.2.5, Beispiel C). Sobald Name, Funktion oder eine Telefonnummer eingeblendet und nicht gesagt werden, fehlt Information im Ton.

Verwandte Kriterien: 1.2.5 (AA) verlangt die Audiodeskription ohne Ausweg über den Text. 1.2.2 betrifft die Gegenrichtung: Ton für Menschen, die nicht hören. Stumme Videos fallen unter 1.2.1.

1.2.4 Untertitel (Live)

Stufe AA, Hintergrund beim W3C: Understanding 1.2.4 (englisch)

Live-Videos mit Ton – Livestream, Webinar, übertragene Veranstaltung – brauchen Untertitel in Echtzeit für den gesamten Ton.

So prüfst du: Von Hand und nur während der Übertragung: Stream öffnen, Untertitel einschalten, einige Minuten mitlesen und mithören. Kommt alles an? Mit welcher Verzögerung? Stimmen Namen und Fachwörter? Erkennst du, wer spricht? Frag vorab beim Anbieter nach: Untertiteln Schriftdolmetschende oder eine automatische Erkennung?

Simulation: Eine echte Live-Übertragung lässt sich auf einer Übungsseite nicht zeigen. Beide Videos sind Aufzeichnungen. Beurteile sie so, als würden sie in diesem Moment gesendet. Untertitelspuren lädt der Browser nur, wenn die Seite über einen Webserver läuft – nicht, wenn du die Datei per Doppelklick öffnest. Die Stimmen sind synthetisch erzeugt, die Bilder gezeichnet.

Beispiel A

Aus der Stadtbücherei: Einladung zur Langen Lesenacht

Live Die Übertragung läuft.

Beispiel B

Aus der Stadtbücherei: Einladung zur Langen Lesenacht

Live Die Übertragung läuft.

Auflösung zu 1.2.4
  • Beispiel A – erfüllt (in der Simulation). Die Untertitel laufen von selbst mit, geben alles Gesprochene wieder, nennen die Sprechenden und den Gong. Sie kommen rund anderthalb Sekunden nach dem Ton – bei Live-Untertiteln ist eine kurze Verzögerung unvermeidlich und kein Verstoß, solange man dem Geschehen folgen kann.
  • Beispiel B – nicht erfüllt. Dieselbe Übertragung ohne Untertitel. Wer nicht hört, sieht zwei Menschen, zwei Tafeln und einen Gong, erfährt aber nichts von dem, was gesagt wird – und kann bei einer Live-Sendung auch nicht auf später warten.

So prüfst du echte Live-Untertitel: Nur als Stichprobe während einer Sendung. Achte auf Vollständigkeit, Verzögerung, Namen und Fachwörter, mehrere Sprechende. Untertitel von Schriftdolmetschenden (Technik G9) sind der verlässliche Weg; rein automatische Live-Untertitel sind in der Fachwelt umstritten, weil sie gerade bei Namen, Fachsprache und Sprecherwechseln Fehler machen. Bewertet wird, was in der Stichprobe ankommt. Lässt sich keine Sendung beobachten, steht im Bericht „nicht prüfbar“ mit der Auskunft des Anbieters, nicht „erfüllt“.

Automatisch erkennbar? Nein. axe führt Beispiel B unter „von Hand zu prüfen“ (video-caption), weil dem Video ein track-Element fehlt; zu Beispiel A meldet es nichts. Das ist ein Hinweis, kein Urteil: Bei echten Übertragungen kommen die Untertitel oft gar nicht über ein track-Element, sondern aus dem Player oder als eigener Textbereich neben dem Video.

Grenzfall: Bleibt die Sendung nach dem Ende als Mitschnitt auf der Seite, ist sie ab diesem Moment aufgezeichnet. Dann gelten 1.2.2, 1.2.3 und 1.2.5: Die Live-Untertitel können als Grundlage dienen, müssen aber korrigiert und synchronisiert werden. Zweiter Grenzfall: Lädt die Website nur zu einer Videokonferenz ein, prüfst du nicht die Website, sondern die Konferenzsoftware.

Verwandte Kriterien: Reiner Live-Ton ohne Bild, etwa ein Radiostream, ist erst auf Stufe AAA geregelt (1.2.9) und gehört nicht zum Prüfumfang. Eine Audiodeskription wird für Live-Videos auf A und AA nicht verlangt. Die Kennzeichnung „Live“ steht hier als Text neben dem Player; stünde sie nur im Videobild, wäre das eine Frage für 1.1.1.

1.2.5 Audiodeskription (aufgezeichnet)

Stufe AA, Hintergrund beim W3C: Understanding 1.2.5 (englisch)

Auf Stufe AA braucht jedes aufgezeichnete Video mit Ton, dessen Bild etwas Wichtiges zeigt, das im Ton fehlt, eine Audiodeskription – eine Beschreibung zum Hören. Der Volltext, der bei 1.2.3 noch genügt, reicht hier nicht mehr.

So prüfst du: Von Hand. Bild weg, Ton an: Fehlt etwas Wichtiges? Wenn ja, such nach einer Fassung mit Audiodeskription – als eigener Link beim Video oder als zweite Tonspur im Menü des Players – oder prüfe, ob die Sprechenden selbst sagen, was zu sehen ist. Hör die Fassung mit geschlossenen Augen ganz an: Kommt jede eingeblendete Angabe vor?

Beispiel A

Einladung zur Langen Lesenacht

Video mit Ton, 37 Sekunden, mit Untertiteln. Textfassung dieses Videos lesen

Untertitelspuren lädt der Browser nur, wenn die Seite über einen Webserver läuft – nicht, wenn du die Datei per Doppelklick öffnest. Alle Stimmen sind synthetisch erzeugt, die Bilder gezeichnet.

Beispiel B

Einladung zur Langen Lesenacht – Fassung mit Audiodeskription

Video mit Ton, 62 Sekunden, mit Untertiteln

Beispiel C

Neue Öffnungszeiten ab November

Video mit Ton, 18 Sekunden, mit Untertiteln

Auflösung zu 1.2.5
  • Beispiel A – nicht erfüllt. Datum, Uhrzeit, Raum, Anmeldefrist, Telefonnummer und die Namen stehen nur im Bild. Der Link führt zu einer vollständigen Textfassung – das erfüllt 1.2.3 auf Stufe A, aber nicht 1.2.5: Auf AA muss die Bildinformation zu hören sein. Wer das Video hört, soll es als Video erleben können und nicht auf einen Text ausweichen müssen.
  • Beispiel B – erfüllt. Eine eigene Fassung des Videos, in der eine dritte Stimme das Gezeigte beschreibt: den Titel, wer zu sehen ist, die Einblendungen der Namen und beide Tafeln mit allen Angaben. Weil die Pausen im Original dafür zu kurz sind, bleibt das Bild an diesen Stellen länger stehen – deshalb 62 statt 37 Sekunden. Zulässig sind eine eigene Fassung mit Beschreibung (Technik G173), eine zweite, zuschaltbare Tonspur (G78) oder eine Fassung mit angehaltenem Bild (G8). Die Untertitel dieser Fassung enthalten auch die Beschreibung, damit 1.2.2 erfüllt bleibt.
  • Beispiel C – erfüllt, ohne Audiodeskription. Eine Person spricht frontal in die Kamera, nichts wird eingeblendet, und sie nennt ihren Namen selbst. Das Bild enthält nichts Wichtiges, was im Ton fehlt – es gibt nichts zu beschreiben. Dieselbe Aufnahme mit eingeblendeten, aber nicht gesprochenen Öffnungszeiten wäre nicht erfüllt.

Automatisch erkennbar? Nein. axe meldet zu keinem der drei Videos etwas. Ob das Bild etwas zeigt, das im Ton fehlt, und ob eine Beschreibung es wiedergibt, hört nur ein Mensch.

Für die Praxis: Am einfachsten ist die Beschreibung im Hauptton. Sagt Jana Winter statt „Das seht ihr hier“ gleich „Freitag, 13. November, 19 Uhr, Raum 2.14“ und werden ebenso die Angaben der zweiten Tafel (Anmeldefrist, Telefonnummer, Eintritt frei) und die beiden Namen gesagt, braucht das Video keine zweite Fassung, und 1.2.3 ist mit erfüllt. Das ist eine Frage des Drehbuchs, nicht der Filmproduktion.

Grenzfall: Der Mitschnitt eines Webinars, in dem Folien gezeigt, aber nicht vorgelesen werden („wie ihr hier seht …“), ist ein typischer Verstoß. Ein Mitschnitt fällt nicht mehr unter 1.2.4, sondern unter die Kriterien für aufgezeichnete Medien.

Verwandte Kriterien: 1.2.3 (A) lässt die Wahl zwischen Audiodeskription und Textfassung; 1.2.5 (AA) nimmt die Textfassung als Ausweg weg. Wer nach AA prüft, bewertet beide: Beispiel A hier ist bei 1.2.3 erfüllt und bei 1.2.5 nicht. Stumme Videos: 1.2.1.

1.3.1 Info und Beziehungen

Stufe A, Hintergrund beim W3C: Understanding 1.3.1 (englisch)

Was man an der Darstellung erkennt – Überschriften, Listen, Seitenbereiche, Tabellenköpfe, zusammengehörende Formularfelder, Pflichtangaben –, muss auch im Code stehen, sodass Hilfsmittel es auslesen können. Wo das nicht geht, muss es der Text ausdrücklich sagen.

So prüfst du: Erst ansehen und notieren, was du siehst. Dann vergleichen, was im Code ankommt: Gliederung mit der Erweiterung HeadingsMap oder ohne Installation auf wave.webaim.org in der Ansicht „Structure“ (das geht nur, wenn die Seite unter einer öffentlichen Adresse erreichbar ist); Rolle und Ebene im Barrierefreiheitsbaum der Entwicklerwerkzeuge; mit dem Screenreader springen – NVDA: H Überschrift, L Liste, D Landmark, T Tabelle, in der Tabelle Strg + Alt + Pfeiltasten; Windows-Sprachausgabe: Scanmodus mit Feststelltaste + Leertaste einschalten, dann ebenfalls H, L, D, T; VoiceOver: Rotor mit VO + U, nächste Tabelle mit VO + Cmd + T. Gegenprobe ohne Gestaltung: Firefox „Ansicht → Webseiten-Stil → Kein Stil“, Safari „Entwickler → Stile deaktivieren“.

Beispiel A: Überschriften

Ausweis verlängern

Dein Leseausweis gilt zwölf Monate. Verlängern kannst du ihn ab vier Wochen vor dem Ablauf.

Online

Melde dich in deinem Konto an und wähle „Ausweis verlängern“. Die neue Laufzeit gilt sofort.

Vor Ort

Komm mit deinem Ausweis an die Theke im Erdgeschoss. Das dauert etwa fünf Minuten.

Beispiel B: Überschriften

Ausweis verlängern

Dein Leseausweis gilt zwölf Monate. Verlängern kannst du ihn ab vier Wochen vor dem Ablauf.

Online

Melde dich in deinem Konto an und wähle „Ausweis verlängern“. Die neue Laufzeit gilt sofort.

Vor Ort

Komm mit deinem Ausweis an die Theke im Erdgeschoss. Das dauert etwa fünf Minuten.

Beispiel C: Überschriften

Vorlesestunde für Kinder

Jeden Dienstag lesen Ehrenamtliche in der Kinderbücherei vor – für Kinder von vier bis acht Jahren.

Geschichten machen groß.
Termine

Dienstags um 16 Uhr, außer in den Schulferien.

Anmeldung

Nicht nötig. Kommt einfach vorbei.

Beispiel D: Listen

Für die Anmeldung brauchst du:

  • Personalausweis oder Reisepass
  • deine aktuelle Anschrift
  • bei Kindern unter 14 Jahren: Unterschrift eines Elternteils

So läuft die Anmeldung ab:

  1. Formular an der Theke ausfüllen
  2. Ausweisdokument vorzeigen
  3. Leseausweis direkt mitnehmen

Beispiel E: Listen

Für die Anmeldung brauchst du:

– Personalausweis oder Reisepass
– deine aktuelle Anschrift
– bei Kindern unter 14 Jahren: Unterschrift eines Elternteils

So läuft die Anmeldung ab:

1. Formular an der Theke ausfüllen
2. Ausweisdokument vorzeigen
3. Leseausweis direkt mitnehmen

Beispiel G: Absätze

Hausordnung in Kürze
Die Stadtbücherei ist ein Ort für alle. Bitte nimm Rücksicht auf andere, die hier lesen, lernen oder arbeiten.

Essen ist nur im Lesecafé erlaubt. Getränke in verschließbaren Flaschen darfst du überallhin mitnehmen.

Taschen und Jacken kannst du in den Schließfächern am Eingang lassen. Sie sind kostenlos.

Beispiel H: Absätze

Hausordnung in Kürze

Die Stadtbücherei ist ein Ort für alle. Bitte nimm Rücksicht auf andere, die hier lesen, lernen oder arbeiten.

Essen ist nur im Lesecafé erlaubt. Getränke in verschließbaren Flaschen darfst du überallhin mitnehmen.

Taschen und Jacken kannst du in den Schließfächern am Eingang lassen. Sie sind kostenlos.

Beispiel I: Hervorhebung

Vorlesestunden im November

Fett gedruckte Termine sind ausgebucht.

  • Dienstag, 3. November, 16 Uhr (ausgebucht)
  • Dienstag, 10. November, 16 Uhr
  • Dienstag, 17. November, 16 Uhr (ausgebucht)
  • Dienstag, 24. November, 16 Uhr

Beispiel J: Hervorhebung

Vorlesestunden im November

Fett gedruckte Termine sind ausgebucht.

  • Dienstag, 3. November, 16 Uhr
  • Dienstag, 10. November, 16 Uhr
  • Dienstag, 17. November, 16 Uhr
  • Dienstag, 24. November, 16 Uhr
Auflösung zu 1.3.1, Teil 1: Struktur-Röntgen
  • Beispiel A – nicht erfüllt. „Ausweis verlängern“, „Online“ und „Vor Ort“ sehen aus wie Überschriften, sind aber ein div und Absätze mit großer oder fetter Schrift. Im Baum fehlt die Rolle „heading“, in der Gliederung von HeadingsMap oder WAVE fehlen die drei Einträge, und mit H springt der Screenreader an den drei Zeilen vorbei. Wer nicht sieht, erkennt die Gliederung nicht und kann die Abschnitte nicht gezielt ansteuern.
  • Beispiel B – erfüllt. Dieselbe Darstellung, aber mit h5 und h6. Die Ebenen bilden ab, was man sieht: „Online“ und „Vor Ort“ sind Unterabschnitte von „Ausweis verlängern“.
  • Beispiel C – nicht erfüllt. Hier ist alles als Überschrift ausgezeichnet – auch der Spruch „Geschichten machen groß.“ (h5), der nur wegen der großen Schrift ein Überschriften-Element bekommen hat. Unter ihm beginnt kein Abschnitt. In der Gliederung hängen „Termine“ und „Anmeldung“ jetzt unter dem Spruch statt unter „Vorlesestunde für Kinder“: Die Auszeichnung behauptet eine Beziehung, die es im Inhalt nicht gibt. Diese Bühne verbiegt die Gliederung der Übungsseite an dieser Stelle absichtlich.
  • Beispiel D – erfüllt. ul und ol. Der Screenreader sagt „Liste mit 3 Einträgen“ an, L springt hin. Die Gedankenstriche kommen aus dem CSS und sind reine Gestaltung.
  • Beispiel E – nicht erfüllt. Striche und Ziffern sind getippt, die Zeilen mit br umbrochen. Für den Screenreader ist das je ein Absatz Fließtext: keine Ansage „Liste“, keine Anzahl der Einträge, kein Sprung mit L. Ohne Stile sieht es fast gleich aus – verräterisch ist erst der Code oder der Baum.
  • Beispiel F, Seite 1 – nicht erfüllt. Die fünf Bereiche sind nur gestaltet: lauter div, keine Landmarks, und auch „Willkommen …“, „Aktuelles“ und „Öffnungszeiten“ sind keine Überschriften. Mit D und H findet der Screenreader nichts; der Rotor von VoiceOver zeigt weder Orientierungspunkte noch Überschriften. Der Sprunglink am Anfang funktioniert – 2.4.1 ist deshalb nicht betroffen.
  • Beispiel F, Seite 2 – erfüllt. header, nav mit Namen, main, aside mit Namen, footer, dazu h1 und h2. Jeder sichtbare Bereich ist als Landmark ansteuerbar.
  • Beispiel F, Seite 3 – Grenzfall, umstritten. Keine Landmarks, aber echte Überschriften für den Hauptinhalt und die Randspalte. Landmarks sind eine ausreichende Technik, nicht die einzige; sind die Inhaltsbereiche über Überschriften erkennbar, bewerten viele Prüfende 1.3.1 als erfüllt. Kopf, Navigation und Fuß bleiben hier allerdings unbenannt. Im Bericht: als Empfehlung notieren, mit Blick auf 2.4.1.
  • Beispiel G – Grenzfall, in der Regel kein Verstoß. Ein einziges div, die Absätze entstehen durch doppelte br. Die Beziehung „neuer Absatz“ trägt hier keine Bedeutung, die verloren ginge; Screenreader lesen den Text verständlich vor, verloren geht höchstens das Springen von Absatz zu Absatz. Nach den WCAG: als Hinweis notieren, nicht als Verstoß. Der BITV-Test ist hier strenger: Im Prüfschritt 9.1.3.1d „Inhalt gegliedert“ führen doppelte br für Textabsätze zu „nicht voll erfüllt“, weil im Lesemodus der Screenreader leere Positionen entstehen können. Wer nach dem BITV-Test prüft, bewertet Beispiel G also als Mangel.
  • Beispiel H – erfüllt. Drei p-Elemente.
  • Beispiel I – erfüllt. Die Information steht im Text („ausgebucht“) und ist zusätzlich mit strong hervorgehoben. Wer die Schrift nicht sieht, erfährt dasselbe.
  • Beispiel J – nicht erfüllt. „Ausgebucht“ steckt allein in der Schriftstärke, und die kommt nur aus dem CSS (span mit Klasse). Weder Code noch Text tragen die Information; der Screenreader liest vier gleichwertige Termine vor. Auch strong allein wäre hier zu wenig, denn Screenreader sagen Hervorhebungen in der Grundeinstellung meist nicht an – der Text muss es sagen, wie in Beispiel I.

Automatisch erkennbar? Kaum. axe meldet zu keinem der Beispiele A bis J einen Verstoß – ein Werkzeug sieht, ob Markup vorhanden ist, aber nicht, ob es zur Darstellung passt. WAVE zeigt die Gliederung und kann große oder fette Kurzabsätze als „Possible heading“ markieren; das ist ein Hinweis zum Nachprüfen, kein Urteil. Auf Seite 1 und Seite 3 zu Beispiel F meldet axe nur mit eingeschalteten „Best Practices“ etwas zu fehlenden Landmarks.

Grenzfall übersprungene Ebene: Folgt auf eine h2 direkt eine h4, ist das für sich kein Verstoß – die WCAG verlangen keine lückenlose Hierarchie. WAVE zeigt dafür eine Warnung („Skipped heading level“), keinen Fehler. Ein Verstoß ist es erst, wenn die Ebenen die Beziehung verkehrt darstellen – etwa ein Unterabschnitt auf höherer Ebene als sein Abschnitt oder, wie in Beispiel C, eine Überschrift, die gar keinen Abschnitt einleitet.

Grenzfall Betonung: Reines Betonen ohne Bedeutungsänderung („Bitte komm pünktlich“) ist kein Fall für 1.3.1, egal wie es ausgezeichnet ist. Kritisch wird es, wenn an der Hervorhebung eine Information hängt, die sonst nirgends steht.

Verwandte Kriterien: Ob eine Überschrift beschreibt, was folgt, ist 2.4.6 – hier geht es nur darum, ob sie als Überschrift ausgezeichnet ist. Ob sich wiederholende Blöcke umgehen lassen, ist 2.4.1. Information nur über Farbe ist 1.4.1.

Teil 2 – Tabellen-Werkstatt. Je Tabelle: Datentabelle oder Layout? Werden beim Wechsel der Zelle die passenden Zeilen- und Spaltenköpfe angesagt? Bei den Optionsfeldern: Wird die Frage mit angesagt, wenn du mit der Tabulatortaste hineinspringst?

Beispiel K: Tabelle 1 – Abfahrtszeiten

Abfahrten ab Haltestelle „Bücherei“
Linie Richtung Abfahrt
12 Hauptbahnhof 14:05 Uhr
12 Westpark 14:11 Uhr
34 Klinikum 14:16 Uhr
7 Hafen 14:22 Uhr

Beispiel L: Tabelle 2 – Seitenlayout

Layout
Service
Neu im Regal

Über 200 neue Romane, Sachbücher und Hörbücher stehen seit dieser Woche im Erdgeschoss. Schau vorbei oder stöbere im Katalog.

Beispiel M: Tabelle 3 – Sprechzeiten

Sprechzeiten der Ausweisstelle
Standort Montag Mittwoch Freitag
Vormittag Nachmittag Vormittag Nachmittag Vormittag Nachmittag
Hauptstelle 9 bis 12 Uhr 14 bis 18 Uhr 9 bis 12 Uhr 14 bis 18 Uhr 9 bis 12 Uhr geschlossen
Zweigstelle Nord geschlossen 14 bis 17 Uhr 9 bis 12 Uhr geschlossen 9 bis 12 Uhr 14 bis 16 Uhr
Bücherbus geschlossen 15 bis 17 Uhr geschlossen 15 bis 17 Uhr 10 bis 12 Uhr geschlossen

Beispiel N: Station 4 – Optionsfelder „Rückruf erwünscht?“

Rückruf erwünscht?

Beispiel O: Optionsfelder „Erinnerung per E-Mail?“

Erinnerung per E-Mail?

Beispiel P: Kontaktformular

Beispiel Q: Kontaktformular

Beispiel R: Kontaktformular

Auflösung zu 1.3.1, Teil 2: Tabellen-Werkstatt und Sternchen
  • Beispiel K, Tabelle 1 – nicht erfüllt. Eine Datentabelle: Jede Uhrzeit gehört zu einer Linie und einer Richtung. Die Kopfzeile besteht aber aus gewöhnlichen td, die nur fett und farbig gestaltet sind. Im Baum haben „Linie“, „Richtung“ und „Abfahrt“ die Rolle „cell“ statt „columnheader“; beim Wechsel der Zelle sagt der Screenreader nur „14:16 Uhr“ an, ohne „Abfahrt“. Korrektur: Kopfzeile mit th scope="col".
  • Beispiel L, Tabelle 2 – nicht erfüllt. Eine Layouttabelle: Sie ordnet nur an, links die Navigation, rechts der Inhalt. Trotzdem trägt sie Auszeichnung einer Datentabelle – eine (unsichtbar gemachte) caption „Layout“ und ein th scope="col" für „Service“. Der Screenreader sagt sinngemäß „Tabelle Layout, 2 Zeilen, 2 Spalten“ an und liest „Service“ als Spaltenkopf zu den Links. Korrektur: Layout mit CSS; wenn die Tabelle bleibt, dann ohne th und caption und mit role="presentation". Verletzt außerdem 1.3.2: Zeile für Zeile gelesen kommt „Service – Neu im Regal – Über 200 neue Romane … – Ausleihe, Termine, Kontakt“; der Titel der Navigation ist durch den ganzen Inhaltsblock von seinen Links getrennt (Layouttabelle, die linear gelesen keinen Sinn ergibt). Die Überschrift „Neu im Regal“ und die Linkliste selbst sind in Ordnung.
  • Beispiel M, Tabelle 3 – erfüllt. Mehrstufig, aber vollständig ausgezeichnet: je Wochentag eine colgroup span="2", die Wochentage als th colspan="2" scope="colgroup", „Vormittag“ und „Nachmittag“ als th scope="col", die Standorte als th scope="row". Lernpunkt: Komplex heißt nicht verletzt. Wie viel davon angesagt wird, unterscheidet sich je Screenreader und Browser – nicht jede Kombination nennt beide Ebenen, also Wochentag und Tageszeit. Robuster, aber aufwendiger, ist die Zuordnung mit headers und id.
  • Beispiel N, Station 4 – nicht erfüllt. „Ja“ und „Nein“ sind richtig beschriftet, aber die Frage „Rückruf erwünscht?“ ist nur ein Absatz davor. Wer mit der Tabulatortaste in die Gruppe springt, hört sinngemäß „Ja, Auswahlschalter, nicht aktiviert, 1 von 2“ – wozu, bleibt offen. Die sichtbare Zusammengehörigkeit von Frage und Optionen steht nicht im Code. Korrektur: fieldset und legend wie in Beispiel O.
  • Beispiel O – erfüllt. fieldset mit legend. Beim Sprung in die Gruppe wird die Frage mit angesagt, sinngemäß „Erinnerung per E-Mail?, Gruppierung“. Im Baum: Rolle „group“ mit dem Namen aus der legend. Gleichwertig wäre role="radiogroup" mit aria-labelledby.
  • Beispiel P – nicht erfüllt. Die Sternchen sind zu sehen, kommen bei Hilfsmitteln aber nicht an: Sie stehen in einem span mit aria-hidden="true", und die Felder tragen weder required noch aria-required. Im Baum heißt das Feld nur „Name“, der Screenreader sagt nichts von „erforderlich“. Die sichtbare Information „Pflichtfeld“ ist weder im Code ermittelbar noch im Text gesagt. Außerdem fehlt die Erklärung, was das Sternchen bedeutet (siehe Streitfall).
  • Beispiel Q – erfüllt für 1.3.1; Streitfall bei 3.3.2. Das Sternchen ist Text im label, und die Felder tragen required; im Baum heißt das Feld „Name *“ mit dem Zustand „erforderlich“. Die Information kommt im Code an. Nirgends steht aber, was das Sternchen bedeutet.
  • Beispiel R – Grenzfall, kein sicherer Verstoß. Die Sternchen stehen nicht im HTML, sondern kommen per CSS (::after mit content); required fehlt. Früher galt das als Verstoß gegen 1.3.1 (Failure F87). Das W3C führt F87 inzwischen als überholt: Heutige Browser übernehmen CSS-generierten Text in den zugänglichen Namen – im Baum heißt das Feld „Name *“, genau wie in Q. Es bleiben Nachteile: Ohne Stile oder mit eigener Stilvorlage sind die Sternchen weg, sie lassen sich nicht markieren und nicht mit der Seitensuche finden. Im Bericht: Empfehlung „Sternchen ins HTML und required setzen“, kein Verstoß. Der Unterschied zu P: Dort ist das Sternchen für Hilfsmittel ausdrücklich versteckt.

Streitfall Sternchen – 1.3.1 oder 3.3.2? Es kommt auf die Umsetzung an, denn es sind zwei Fragen. 1.3.1 fragt, ob die Information „Pflichtfeld“ im Code ankommt: in Q ja (Text im label und required), in P nein, in R nach heutigem Stand ebenfalls ja – nur weniger robust. 3.3.2 fragt, ob verständlich angeleitet wird: Fehlt die Erklärung „Felder mit * sind Pflichtfelder“, fehlt eine Anweisung. Weil die Konvention verbreitet ist, wird das in der Prüfpraxis unterschiedlich streng bewertet. Empfehlung für den Bericht: 3.3.2 als nicht voll erfüllt mit geringer Schwere, dazu der Vorschlag, die Erklärung an den Formularanfang zu setzen und required zu verwenden. Das gilt für alle drei Formulare. Wäre das Sternchen ein Bild ohne Alternativtext, ginge es um 1.1.1.

Automatisch erkennbar? Nein. axe meldet zu keinem der Beispiele K bis R einen Verstoß: Fehlende Kopfzellen, eine Layouttabelle mit th, eine Optionsgruppe ohne Gruppierung und versteckte Sternchen erkennt nur, wer hinsieht, hinhört und in den Code schaut.

Grenzfall: Bei einer einfachen Tabelle mit einer Kopfzeile genügt th; scope macht die Richtung eindeutig und ist gute Praxis. Eine caption ist ebenfalls gute Praxis, aber nicht von 1.3.1 verlangt – Tabelle 1 scheitert an den Kopfzellen, nicht an der Beschriftung.

Verwandte Kriterien: Ob ein Feld überhaupt eine sichtbare Beschriftung hat, ist 3.3.2; ob sie im zugänglichen Namen ankommt, 4.1.2. Ob eine Layouttabelle in sinnvoller Reihenfolge vorgelesen wird, ist 1.3.2.

1.3.2 Bedeutungstragende Reihenfolge

Stufe A, Hintergrund beim W3C: Understanding 1.3.2 (englisch)

Wenn die Reihenfolge von Inhalten ihre Bedeutung trägt – Schritt 1 vor Schritt 2, der Preis beim richtigen Produkt –, muss diese Reihenfolge auch im Code stimmen. Hilfsmittel lesen in der Reihenfolge des DOM, nicht in der Reihenfolge, die das CSS auf den Bildschirm legt.

So prüfst du: Lass den Abschnitt vom Screenreader am Stück vorlesen (NVDA: Einfg + Pfeil runter; Windows-Sprachausgabe: Feststelltaste + R; VoiceOver: VO + A) und vergleiche mit dem, was du siehst. Ohne Screenreader: Stile abschalten (Firefox „Ansicht → Webseiten-Stil → Kein Stil“, Safari „Entwickler → Stile deaktivieren“) oder im Elemente-Bereich der Entwicklerwerkzeuge die Reihenfolge der Elemente ablesen. Prüfe auch bei schmalem Fenster, falls das Layout dort umsortiert.

Beispiel A

So verlängerst du deinen Ausweis
Schritt 1: Anmelden

Melde dich mit Ausweisnummer und Passwort in deinem Konto an.

Schritt 2: Auswählen

Wähle dort den Punkt „Ausweis verlängern“ und prüfe deine Anschrift.

Schritt 3: Bestätigen

Bestätige danach die Verlängerung. Die neue Laufzeit gilt sofort.

Beispiel B

So verlängerst du deinen Ausweis
Schritt 2: Auswählen

Wähle dort den Punkt „Ausweis verlängern“ und prüfe deine Anschrift.

Schritt 3: Bestätigen

Bestätige danach die Verlängerung. Die neue Laufzeit gilt sofort.

Schritt 1: Anmelden

Melde dich mit Ausweisnummer und Passwort in deinem Konto an.

Beispiel C

Aus dem Büchereiladen

4,00 €

Lesetasche

Aus Baumwolle, mit langen Henkeln.

18,00 €

Jahresausweis

Für Erwachsene, gilt zwölf Monate.

10,00 €

Geschenkgutschein

Einlösbar für Ausweis und Laden.

Beispiel D

Kontakt

Theke im Erdgeschoss
Telefon 0000 123456
Dienstag bis Freitag, 10 bis 18 Uhr

Neue Öffnungszeiten ab November

Ab dem 1. November haben wir samstags länger geöffnet: von 10 bis 14 Uhr. Montags bleibt die Bücherei geschlossen.

Die Rückgabeklappe am Eingang kannst du weiterhin rund um die Uhr nutzen.

Auflösung zu 1.3.2
  • Beispiel A – erfüllt. Die drei Schritte stehen im DOM in derselben Reihenfolge, in der du sie siehst: 1, 2, 3.
  • Beispiel B – nicht erfüllt. Sieht genauso aus wie A, aber im DOM steht Schritt 2 vor Schritt 3 vor Schritt 1. Erst die CSS-Eigenschaft order sortiert die Kästen auf dem Bildschirm um. Der Screenreader liest „Schritt 2: Auswählen – Wähle dort …“, bevor überhaupt vom Anmelden die Rede war; auch die Überschriftenliste zeigt 2, 3, 1. Bei einer Anleitung trägt die Reihenfolge die Bedeutung – hier ändert die Positionierung per CSS den Sinn. Betroffen sind alle, die linear lesen: Screenreader, Braillezeile, Lesemodus, eigene Stilvorlagen.
  • Beispiel C – nicht erfüllt, wegen der fehlenden Gruppierung. Auf dem Bildschirm steht der Preis unter dem Produkt. Im DOM steht er davor – und die Karten sind nur div, also für Hilfsmittel nicht als Einheiten erkennbar. Erst beides zusammen entstellt den Sinn. Vorgelesen ergibt das: „4,00 € – Lesetasche – Aus Baumwolle … – 18,00 € – Jahresausweis …“. Wer von Überschrift zu Überschrift geht und weiterliest, hört nach „Lesetasche“ als nächsten Preis 18,00 €: Der Preis rutscht zum vorigen Produkt, und der erste Preis hängt in der Luft.
  • Beispiel D – erfüllt. Auch hier weicht das DOM von der Darstellung ab: Der Kasten „Kontakt“ steht im Code vor dem Beitrag, das Grid zeigt ihn rechts daneben (schmal: darunter). Beide Blöcke sind aber voneinander unabhängig; welcher zuerst vorgelesen wird, ändert nichts am Sinn. Nicht jede Abweichung ist ein Verstoß.

Automatisch erkennbar? Nein. axe meldet zu keinem der vier Beispiele etwas; ob eine Reihenfolge Bedeutung trägt, kann nur ein Mensch beurteilen.

Grenzfall Dialog am Ende des DOM: Viele Dialoge und Hinweise hängen im Code ganz am Ende der Seite. Öffnet sich der Dialog und der Fokus wird hineingesetzt, liest der Screenreader ihn im richtigen Moment – für 1.3.2 kein Problem. Bleibt der Fokus dagegen auf der Seite, finden Screenreader-Nutzende den Dialog erst nach dem gesamten Inhalt. Das ist in erster Linie 2.4.3; bei einem nicht modalen Hinweis, der sich auf eine bestimmte Stelle bezieht („Dieses Feld …“), aber im Code weit davon entfernt steht, auch 1.3.2.

Grenzfall schmale Ansicht: Sortiert ein Layout erst unterhalb einer bestimmten Breite um, prüfst du genau an dieser Breite. In Beispiel B bleibt die Abweichung bei jeder Breite bestehen, auch wenn die Schritte untereinander stehen.

Grenzfall Gruppierung: Wären die Karten in Beispiel C Listeneinträge (li), würde der Screenreader Anfang und Ende jeder Karte ansagen; „Preis vor Name“ innerhalb eines Eintrags wäre dann unschön, aber nicht mehr sinnentstellend.

Verwandte Kriterien: Die Reihenfolge beim Tabben ist 2.4.3, die Lesereihenfolge ist 1.3.2. Ob Struktur überhaupt ausgezeichnet ist, ist 1.3.1.

1.3.3 Sensorische Eigenschaften

Stufe A, Hintergrund beim W3C: Understanding 1.3.3 (englisch)

Anweisungen dürfen sich nicht allein auf das stützen, was man sieht oder hört: Form, Farbe, Größe, Lage auf dem Bildschirm, Ausrichtung oder Ton. Ein zusätzlicher Name oder Text genügt – die sinnliche Angabe darf dann stehen bleiben.

So prüfst du: Lies alle Anleitungs- und Hinweistexte. Suche nach Wörtern wie „rechts“, „oben“, „rund“, „grün“, „groß“ oder „Ton“ und frage dich: Finde ich das Gemeinte auch, wenn ich nur den Namen oder die Beschriftung kenne? Gegenprobe mit dem Screenreader: Liste der Schaltflächen öffnen (NVDA: Einfg + F7; VoiceOver: Rotor mit VO + U) und prüfen, ob die Anleitung dazu passt. Ein Werkzeug brauchst du dafür nicht.

Beispiel A

Gruppenraum reservieren – Schritt 3 von 3
Raum
Gruppenraum 2
Tag
Donnerstag, 12. November 2026
Zeit
16 bis 18 Uhr

Wenn alle Angaben stimmen, wähle „Reservierung abschicken“ (grüner Knopf rechts). Zum Ändern wähle „Zurück“ (grauer Knopf links).

Beispiel B

Gruppenraum reservieren – Schritt 3 von 3
Raum
Gruppenraum 2
Tag
Donnerstag, 12. November 2026
Zeit
16 bis 18 Uhr

Wenn alle Angaben stimmen, drücke den grünen Knopf rechts. Zum Ändern nimm den grauen Knopf links.

Beispiel C

Leseausweis für Kinder

Kinder und Jugendliche bekommen den Leseausweis kostenlos. Welche Unterlagen ihr zur Anmeldung mitbringen müsst, steht in der Liste unten.

Die Anmeldung dauert etwa zehn Minuten. Den Ausweis könnt ihr gleich mitnehmen.

Unterlagen für die Anmeldung
  • Ausweisdokument eines Elternteils
  • Unterschrift eines Elternteils auf dem Anmeldebogen

Beispiel D

Ton ist aus.

Steuerung der Übungsseite – gehört nicht zum Beispiel. Solange der Ton aus ist, bleibt Beispiel D stumm.

Selbstverbuchung ausprobieren

Wähle „Medium verbuchen“. Ein hoher Ton bedeutet: Das Medium ist auf dein Konto gebucht. Ein tiefer Ton bedeutet: Bitte wende dich an die Theke.

Auflösung zu 1.3.3
  • Beispiel A – erfüllt. Die Anleitung nennt die Schaltflächen beim Namen – „Reservierung abschicken“ und „Zurück“. Farbe und Lage stehen nur zusätzlich in Klammern. Wer die Seite hört, auf einem schmalen Bildschirm sieht oder Farben nicht unterscheidet, findet die Schaltflächen über den Namen.
  • Beispiel B – nicht erfüllt. „Der grüne Knopf rechts“ und „der graue Knopf links“ – die Anleitung beschreibt die Schaltflächen nur über Farbe und Lage. Die Schaltflächen selbst sind in Ordnung und heißen wie in A. Mit dem Screenreader gibt es aber weder „grün“ noch „rechts“; auf einem schmalen Bildschirm oder bei starker Vergrößerung stehen die Schaltflächen untereinander, und „rechts“ stimmt nicht mehr.
  • Beispiel C – erfüllt (Grenzfall „siehe unten“). „Unten“ ist zwar eine Lageangabe, bedeutet im Deutschen aber auch „weiter hinten im Text“. Die Liste folgt in der Lesereihenfolge tatsächlich nach dem Hinweis und ist eindeutig; zusätzlich trägt sie eine Überschrift. So bewertet es auch das W3C in den Erläuterungen zu 1.3.3. Kritisch würde es, wenn die Liste im Code vor dem Hinweis stünde oder mehrere Listen folgten.
  • Beispiel D – nicht erfüllt. Die Anleitung stützt sich allein auf den Ton: hoch heißt gebucht, tief heißt „zur Theke“. Wer gehörlos oder schwerhörig ist, den Ton abgestellt hat oder in lauter Umgebung arbeitet, erfährt das Ergebnis nicht. Es fehlt eine sichtbare Meldung, etwa „Verbucht“ oder „Bitte wende dich an die Theke“. Dass auch das Ergebnis selbst nur als Ton kommt, ist zusätzlich ein Fall für 1.1.1. Die Schaltfläche „Ton für Beispiel D“ und die Anzeige „Ton ist an/aus“ gehören zur Übungsseite, nicht zum Beispiel; die Töne kommen abwechselnd hoch und tief.

Automatisch erkennbar? Nein. Kein Werkzeug versteht, worauf sich eine Anleitung bezieht; axe meldet zu keinem der Beispiele etwas. Hier hilft nur Lesen.

Grenzfall: Eine sinnliche Angabe ist nicht verboten – sie darf nur nicht die einzige sein. „Wähle ‚Weiter‘ (grüner Knopf rechts)“ genügt. Ein Symbol allein („Räume mit ▲ haben einen Beamer“) reicht dagegen nicht, wenn das Symbol keine Textalternative hat.

Verwandte Kriterien: Information nur über Farbe – ohne dass eine Anleitung im Spiel ist – gehört zu 1.4.1. Stimmt der sichtbare Name einer Schaltfläche nicht mit dem zugänglichen Namen überein, ist das 2.5.3. Fehlt die Anleitung ganz, ist es 3.3.2.

1.3.4 Bildschirmausrichtung

Stufe AA, Hintergrund beim W3C: Understanding 1.3.4 (englisch)

Inhalte müssen sich im Hochformat und im Querformat ansehen und bedienen lassen. Eine Seite darf die Ansicht nicht auf eine Ausrichtung festlegen – außer genau diese Ausrichtung ist für die Funktion wesentlich.

So prüfst du: Am Smartphone zuerst die Ausrichtungssperre des Geräts lösen, dann die Seite im Hochformat und im Querformat öffnen und bedienen. Ohne Smartphone: in Chrome oder Edge die Entwicklerwerkzeuge öffnen (F12, am Mac Cmd + Wahl + I), den Gerätemodus einschalten (Strg + Umschalt + M, am Mac Cmd + Umschalt + M), ein Smartphone wählen und auf das Symbol „Drehen“ klicken. In Firefox dieselbe Tastenkombination (am Mac Cmd + Wahl + M). In Safari im Menü „Entwickler“ den Modus für responsives Design starten – der Befehl heißt je nach Version etwas anders – und die Ansicht einmal höher als breit, einmal breiter als hoch ziehen. Prüfe mit einem Smartphone-Profil; manche Sperren greifen bei Tablet-Größen nicht. Grenze des Gerätemodus: Er ändert nur die Abmessungen des Fensters; eine Sperre per Skript oder in den Einstellungen einer App zeigt sich oft nur auf dem echten Gerät.

Die Beispiele sind eigene Dokumente, weil die Ausrichtung immer das ganze Fenster betrifft. Öffne jedes in einem neuen Tab und prüfe beide Ausrichtungen.

Auflösung zu 1.3.4
  • Beispiel A – nicht erfüllt. Im Querformat eines Smartphones verschwindet der Ausweis, stattdessen steht dort „Bitte drehe dein Gerät ins Hochformat“. Dahinter steckt eine CSS-Medienabfrage: @media (orientation: landscape) and (max-height: 600px) blendet den Inhalt aus und die Aufforderung ein. Für einen Ausweis mit Strichcode ist das Hochformat nicht wesentlich. Wer das Gerät fest montiert hat, zum Beispiel quer am Rollstuhl, kann nicht drehen und kommt nicht an den Ausweis. Die Sperre greift nur bis 600 CSS-Pixel Höhe: Auf einem Tablet im Querformat bleibt alles sichtbar – wer nur mit einem Tablet-Profil prüft, findet nichts. Verletzt außerdem 1.4.4 und 1.4.10: Am Rechner verschwindet der Inhalt ebenfalls, sobald das Fenster durch Zoomen oder Verkleinern breiter als hoch und höchstens 600 CSS-Pixel hoch ist.
  • Beispiel B – erfüllt. Derselbe Ausweis, ohne Sperre. Im Querformat rücken Ausweis und Ausleihliste nebeneinander; alles bleibt lesbar und bedienbar.
  • Beispiel C – erfüllt (Ausnahme). Die Klaviatur verlangt auf schmalen Geräten das Querformat und zeigt im Hochformat eine Aufforderung zum Drehen – genau das, was in A ein Verstoß ist. Hier greift die Ausnahme: Zwei Oktaven mit 25 Tasten passen hochkant auf kein Smartphone, ohne dass die Tasten zu schmal zum Treffen werden (bei 360 bis 414 CSS-Pixel Breite blieben für eine weiße Taste nur rund 19 bis 23 Pixel, für eine schwarze 14 bis 16). Das W3C nennt eine Klavier-Anwendung ausdrücklich als Beispiel für „wesentlich“. Die Seite sperrt deshalb nur Hochformat-Ansichten, in die die Klaviatur mit ihrer Mindestbreite nicht hineinpasst (Medienabfrage (orientation: portrait) and (max-width: 32.75rem), also bis 524 CSS-Pixel bei üblicher Schriftgröße); auf einem Tablet hochkant bleibt die Klaviatur spielbar. Überschrift, Erklärung und der Link zurück bleiben immer sichtbar. Die Ausnahme ist eine Abwägung: Je weniger Tasten, desto schwächer das Argument – eine einzige Oktave hätte auch hochkant Platz, und die Sperre wäre dann ein Verstoß. Zwei Einwände solltest du kennen: Die Sperre trifft auch ein schmales, hohes Fenster am Rechner, wo niemand drehen kann. Und seitliches Verschieben wäre hochkant technisch möglich – die Seite nutzt es selbst in sehr schmalen Querformat-Fenstern. Ob eine Klaviatur, von der man nur die Hälfte sieht, noch dieselbe Funktion ist, ist die Streitfrage; am Urteil ändert sie nichts.

Automatisch erkennbar? Im Wesentlichen nein. axe meldet auf keiner der drei Seiten etwas dazu; du musst drehen und hinsehen. Verdächtig sind im Code orientation in Medienabfragen, transform: rotate(90deg) auf dem ganzen Inhalt und screen.orientation.lock() im Skript.

Grenzfall: Ein Modul, das einen Überweisungsträger oder Scheck im Querformat abfotografiert, kann wesentlich sein; eine Nachrichtenseite oder ein Formular nie. Kein Befund ist es, wenn das Gerät der prüfenden Person selbst gesperrt ist – deshalb zuerst die Ausrichtungssperre lösen. Kein Befund für 1.3.4 ist es auch, wenn eine Seite im Querformat zwar anders umbricht, aber vollständig bleibt.

Verwandte Kriterien: Ob Inhalte bei 320 CSS-Pixel Breite ohne Querscrollen auskommen, ist 1.4.10. Funktionen, die durch Bewegen oder Kippen des Geräts ausgelöst werden, gehören zu 2.5.4.

1.3.5 Eingabezweck bestimmen

Stufe AA, Hintergrund beim W3C: Understanding 1.3.5 (englisch)

Fragt ein Feld nach Daten über die Person, die das Formular ausfüllt – Name, E-Mail, Telefon, Anschrift, Geburtsdatum und ähnliche Angaben aus einer festen Liste der WCAG –, muss sein Zweck im Code stehen. In HTML leistet das das Attribut autocomplete mit dem passenden Wert.

So prüfst du: Entscheide je Feld zuerst: Geht es um die nutzende Person selbst, und steht der Zweck in der Liste? Dann lies den Wert ab – Rechtsklick auf das Feld, „Untersuchen“, Attribut autocomplete. Ohne Entwicklerwerkzeuge: Seitenquelltext anzeigen (Strg + U, in Safari Wahl + Cmd + U) und nach „autocomplete“ suchen. Vergleiche den Wert mit der Liste der Eingabezwecke in den WCAG (englisch). Ob der Browser tatsächlich etwas vorschlägt, ist kein Prüfmaßstab – das hängt von den gespeicherten Daten ab.

Beispiel A

Leseausweis verschenken
Deine Angaben
Für wen ist der Ausweis?

Beispiel B

Leseausweis verschenken
Deine Angaben
Für wen ist der Ausweis?

Auflösung zu 1.3.5
  • Beispiel A – nicht erfüllt. Von sieben Feldern über die nutzende Person tragen nur drei den passenden Wert. Dazu kommt ein Wert an einem Feld, das gar keinen braucht. Die Einzelheiten stehen in der Tabelle.
  • Beispiel B – erfüllt. Alle sieben Felder unter „Deine Angaben“ tragen den passenden Wert. Die Felder unter „Für wen ist der Ausweis?“ betreffen eine andere Person und tragen zu Recht keinen.
Die Felder im Vergleich
Feld Wert in Beispiel A Bewertung von A Wert in Beispiel B
Vorname given-name passt given-name
Nachname kein Attribut Wert fehlt family-name
E-Mail-Adresse e-mail Tippfehler – diesen Wert gibt es nicht, es heißt email email
Telefon off Zweck nicht ermittelbar; wird überwiegend als nicht erfüllt bewertet tel
Straße und Hausnummer address-line1 passt address-line1
Postleitzahl postal-code passt postal-code
Ort address-level1 gültiger, aber unpassender Wert: Ebene 1 ist das Bundesland oder die Provinz, der Ort ist address-level2 address-level2
Name der beschenkten Person name von 1.3.5 nicht verlangt und hier unpassend: Der Browser bietet den eigenen Namen an kein Attribut
Geburtsdatum der beschenkten Person kein Attribut in Ordnung – Daten über Dritte kein Attribut
Grußtext kein Attribut in Ordnung – kein Zweck aus der Liste kein Attribut

Wozu das Ganze? Browser, Passwortmanager und Hilfsmittel können solche Felder ausfüllen oder mit vertrauten Symbolen kennzeichnen. Das hilft Menschen, die wenig tippen können, und Menschen, denen es schwerfällt, sich Daten zu merken oder fehlerfrei abzuschreiben.

Automatisch erkennbar? Teilweise. axe meldet in Beispiel A genau eine Stelle: den ungültigen Wert e-mail (Regel „autocomplete-valid“). Den fehlenden Wert am Nachnamen, das off am Telefon, den gültigen, aber unpassenden Wert am Ort und den überflüssigen Wert beim Namen der beschenkten Person meldet axe nicht. In Beispiel B meldet axe nichts.

Grenzfall: Die Lieferanschrift einer Geschenkbestellung kann die eigene sein; dafür gibt es die Abschnittskennung shipping vor dem Wert, etwa shipping address-line1. Für die Straße gibt es zwei Werte: address-line1 für ein einzeiliges Feld wie hier und street-address für ein mehrzeiliges Feld (textarea); an einem einzeiligen input passt street-address laut HTML-Standard nicht, auch wenn axe es durchlässt. Suchfeld, Gutscheincode und Nachrichtentext haben keinen Zweck aus der Liste – dort ist 1.3.5 nicht anwendbar. Ein Formular, in dem Mitarbeitende die Daten von Kundschaft erfassen, fragt nicht nach Daten über die nutzende Person.

Verwandte Kriterien: Ob das Feld eine verknüpfte Beschriftung hat, ist 1.3.1 und 4.1.2. Dass bereits eingegebene Daten in einem Prozess nicht noch einmal abgefragt werden, ist 3.3.7. autocomplete für Benutzername und Passwort hilft auch bei 3.3.8.

1.4.1 Benutzung von Farbe

Stufe A, Hintergrund beim W3C: Understanding 1.4.1 (englisch)

Farbe darf nie das einzige sichtbare Mittel sein, um eine Information zu vermitteln, etwas zu unterscheiden, einen Zustand anzuzeigen oder zu einer Eingabe aufzufordern. Farbe ist erlaubt – es braucht nur immer einen zweiten Hinweis: Text, Symbol, Unterstreichung, Muster oder Form.

So prüfst du: Stelle die Anzeige auf Graustufen (Windows: Einstellungen, Barrierefreiheit, Farbfilter; Mac: Systemeinstellungen, Bedienungshilfen, Anzeige, Farbfilter; ohne Systemrechte in den Entwicklerwerkzeugen von Chrome oder Edge im Bereich „Rendering“ die Farbsehschwäche „Achromatopsie“ emulieren). Was du dann nicht mehr unterscheiden kannst, prüfst du genauer: Gibt es einen zweiten Hinweis? Bei Links im Fließtext ohne zweiten Hinweis misst du die Linkfarbe gegen die Farbe des umgebenden Textes, zum Beispiel mit dem WebAIM Link Contrast Checker oder einem anderen Kontrastmesser: mindestens 3:1.

Beispiel A

Den Leseausweis kannst du online verlängern, solange keine Gebühren offen sind. Ausgeliehene Medien verlängerst du höchstens zweimal im Bibliothekskonto. Vorgemerkte Titel sind davon ausgenommen und müssen pünktlich zurück.

Beispiel B

Den Leseausweis kannst du online verlängern, solange keine Gebühren offen sind. Ausgeliehene Medien verlängerst du höchstens zweimal im Bibliothekskonto. Vorgemerkte Titel sind davon ausgenommen und müssen pünktlich zurück.

Beispiel C

Den Leseausweis kannst du online verlängern, solange keine Gebühren offen sind. Ausgeliehene Medien verlängerst du höchstens zweimal im Bibliothekskonto. Vorgemerkte Titel sind davon ausgenommen und müssen pünktlich zurück.

Beispiel D

Ausleihen je Quartal 2025
  • Bücher
  • Hörbücher
  • Filme
Liniendiagramm: Ausleihen je Quartal 2025 nach Medienart Bücher: 420, 380, 340 und 450 Ausleihen. Hörbücher: 150, 210, 290 und 260. Filme: 260, 230, 180 und 140. Ab dem dritten Quartal werden mehr Hörbücher als Filme ausgeliehen. 0 200 400 Q1 Q2 Q3 Q4

Beispiel E

Ausleihen je Quartal 2025
  • Bücher
  • Hörbücher
  • Filme
Liniendiagramm: Ausleihen je Quartal 2025 nach Medienart Bücher: 420, 380, 340 und 450 Ausleihen. Hörbücher: 150, 210, 290 und 260. Filme: 260, 230, 180 und 140. Ab dem dritten Quartal werden mehr Hörbücher als Filme ausgeliehen. 0 200 400 Q1 Q2 Q3 Q4

Beispiel F

Leseausweis verlängern

Rot beschriftete Felder müssen ausgefüllt werden.

Beispiel G

Leseausweis verlängern

Felder mit dem Zusatz „Pflichtfeld“ müssen ausgefüllt werden.

Beispiel H

Neuerwerbungen sortieren nach:
  • „Das Haus am Fluss“ – Nora Weber, 2024
  • „Nachtzug nach Norden“ – Selin Aydin, 2026
  • „Vom Glück der Gärten“ – Jonas Lindqvist, 2025

Beispiel I

Neuerwerbungen sortieren nach:
  • „Das Haus am Fluss“ – Nora Weber, 2024
  • „Nachtzug nach Norden“ – Selin Aydin, 2026
  • „Vom Glück der Gärten“ – Jonas Lindqvist, 2025
Auflösung zu 1.4.1
  • Beispiel A – nicht erfüllt. Die Links sind nicht unterstrichen und unterscheiden sich vom Fließtext nur durch die Farbe: Linkfarbe #0000EE gegen Textfarbe #000000 ergibt 2,23:1 – unter den 3:1, mit denen sich ein Link noch über den Helligkeitsunterschied erkennen ließe. Die Unterstreichung erscheint erst, wenn die Maus schon darüber ist; wer die Links nicht findet, fährt auch nicht darüber (Fehlerbild F73). Betroffen sind Menschen, die Farben nicht oder anders unterscheiden, und alle bei Graustufen-Anzeige. Du merkst es in Graustufen: Die Links verschwinden im Text.
  • Beispiel B – erfüllt. Dieselben Farben, aber die Links sind unterstrichen. Die Unterstreichung ist der zweite Hinweis; die Farbe darf dann beliebig nah an der Textfarbe liegen.
  • Beispiel C – erfüllt (Grenzfall). Keine Unterstreichung, aber die Linkfarbe #C2185B hat zur Textfarbe #000000 3,58:1. Damit unterscheidet sich der Link nicht nur im Farbton, sondern auch in der Helligkeit – das ist der übliche Nachweis über mindestens 3:1 zwischen Link und umgebendem Text (Technik G183). Bei Hover und Fokus kommt hier zusätzlich eine Unterstreichung dazu; das ist eine Empfehlung, das Urteil hängt an der Messung. Zum weißen Hintergrund hat die Linkfarbe 5,87:1, 1.4.3 ist also ebenfalls erfüllt. Hinweis: Manche Prüfstellen bewerten Links im Fließtext ohne Unterstreichung strenger.
  • Beispiel D – erfüllt. Jede Linie hat neben der Farbe ein eigenes Strichmuster und eine eigene Markerform (Kreis, Quadrat, Dreieck); die Legende zeigt dieselben Muster (Farbe plus Muster, Technik G111). In Graustufen bleibt die Zuordnung eindeutig. Noch besser lesbar wäre eine Beschriftung direkt an den Linien.
  • Beispiel E – nicht erfüllt. Die drei Linien unterscheiden sich nur in der Farbe (#C62828, #2E7D32, #A65E00), die Legende ordnet nur über Farbfelder zu. Die Farben sind fast gleich hell (zum Weiß 5,62:1, 5,13:1 und 4,97:1) – in Graustufen und bei Rot-Grün-Sehschwäche lässt sich nicht mehr sagen, welche Linie die Hörbücher zeigt. Der Kontrast der Linien zum Hintergrund reicht aus; 1.4.11 ist nicht das Problem.
  • Beispiel F – nicht erfüllt. Pflichtfelder sind nur an der roten Beschriftung zu erkennen, fehlende Angaben nach dem Absenden nur am roten Rahmen; die Meldung verweist ebenfalls nur auf die Farbe. Die rote Beschriftung (#7A1712) hat zur normalen Beschriftung (#16233A) nur 1,47:1, der rote Rahmen (#B3261E) zum normalen Rahmen (#5B6577) nur 1,11:1 – in Graustufen sehen alle Felder fast gleich aus. Wer Rot nicht von Dunkelblau und Grau unterscheidet, findet weder die Pflichtfelder noch die Lücken. Im Code sind die Felder mit required und nach dem Absenden mit aria-invalid="true" gekennzeichnet – ein Screenreader sagt es also an, sichtbar ist es trotzdem nur über Farbe. Das ist das Fehlerbild F81. Dazu kommt 3.3.1: Welches Feld betroffen ist und was fehlt, steht nirgends als Text.
  • Beispiel G – erfüllt. Pflichtfelder tragen den Zusatz „(Pflichtfeld)“ in der Beschriftung. Nach dem Absenden nennt die Meldung die fehlenden Felder beim Namen, und unter jedem Feld steht ein Text mit Warnzeichen. Der rote Rahmen kommt nur dazu.
  • Beispiel H – erfüllt. Die gewählte Sortierung ist rot, aber zusätzlich fett und mit einem dicken Balken unterstrichen. Form und Schriftstärke bleiben in Graustufen erkennbar. Im Code steht der Zustand als aria-pressed="true". Für eine Auswahl, bei der immer genau eine Möglichkeit gilt, wären Optionsfelder die genauere Auszeichnung; für die Frage hier spielt das keine Rolle.
  • Beispiel I – nicht erfüllt. Die gewählte Sortierung unterscheidet sich nur in der Farbe: Schrift #B3261E statt #4A5361 (zueinander 1,19:1), Rand #B3261E statt #5B6577 (1,11:1). In Graustufen ist nicht zu sehen, welche Schaltfläche gedrückt ist. Ein Screenreader sagt es an (aria-pressed), 4.1.2 ist also erfüllt – sichtbar ist der Zustand trotzdem nur über Farbe. Antwort auf die Zusatzstufe: Das ist 1.4.1. 1.4.11 ist hier nicht verletzt, denn es verlangt keinen Kontrast zwischen zwei Zuständen, sondern zwischen dem, was man zum Erkennen braucht, und seiner Umgebung: Rote Schrift und roter Rand haben zum Weiß 6,54:1. Beides zusammen wäre es, wenn der Zustand nur über eine Farbe gezeigt würde, die selbst weniger als 3:1 zur Umgebung hat (etwa hellgelbe Schrift auf Weiß). Der blasse Haken in Beispiel D bei 1.4.11 ist dagegen nur 1.4.11.

Abgrenzung zu 1.4.3: 1.4.1 fragt „nur Farbe?“, 1.4.3 fragt „genug Kontrast zum Hintergrund?“. Das sind zwei Messungen. In Beispiel A hat der Link zum weißen Hintergrund 9,40:1 – 1.4.3 ist erfüllt, 1.4.1 nicht. Auch die rote Beschriftung in Beispiel F (#7A1712 auf Weiß, 10,72:1) besteht 1.4.3 und scheitert trotzdem an 1.4.1.

Automatisch erkennbar? Teilweise. axe meldet Beispiel A mit der Regel link-in-text-block (Links müssen sich ohne Farbe vom umgebenden Text unterscheiden); Beispiel C lässt axe wegen der 3:1 durchgehen. Das Diagramm in Beispiel E, das Formular in Beispiel F und die Schaltflächen in Beispiel I meldet axe nicht.

Grenzfall: Links in einer Navigation oder in einer Linkliste sind nicht gemeint – dort macht die Position klar, dass es Links sind. Graustufen sind ein Suchwerkzeug, kein Urteil.

Verwandte Kriterien: 1.3.3 (Anweisungen, die sich nur auf Form, Größe oder Position stützen), 1.4.3 und 1.4.11 (Kontrast), 3.3.1 und 3.3.2 (Fehler und Pflichtangaben in Textform).

1.4.2 Audio-Steuerelement

Stufe A, Hintergrund beim W3C: Understanding 1.4.2 (englisch)

Startet Ton von selbst und läuft länger als drei Sekunden, muss man ihn auf der Seite anhalten oder stoppen können – oder seine Lautstärke dort unabhängig von der Lautstärke des Geräts regeln können. Das gilt für die ganze Seite, auch für Teile, die sonst gar nicht geprüft werden.

So prüfst du: Kopfhörer aufsetzen, Ton einschalten, Seite neu laden und nichts anklicken. Startet Ton von selbst? Läuft er länger als 3 Sekunden (mitzählen oder Stoppuhr)? Gibt es früh auf der Seite ein Bedienelement zum Anhalten oder Leiserstellen – auch mit der Tastatur erreichbar und bedienbar (Tab, Leertaste, Pfeiltasten am Regler)? Bleibt es still, suche im Code nach autoplay, .play() oder AudioContext, bevor du „erfüllt“ notierst.

Beispiel A

Steuerung der Übungsseite – gehört nicht zum Beispiel. Beispiel A ist nicht geladen.

Hier erscheint die Beispielseite, sobald du sie lädst.

Beispiel B

Steuerung der Übungsseite – gehört nicht zum Beispiel. Beispiel B ist nicht geladen.

Hier erscheint die Beispielseite, sobald du sie lädst.

Beispiel C

Steuerung der Übungsseite – gehört nicht zum Beispiel. Beispiel C ist nicht geladen.

Hier erscheint die Beispielseite, sobald du sie lädst.

Auflösung zu 1.4.2
  • Beispiel A – erfüllt. Die Musik startet mit dem Laden und läuft rund 24 Sekunden. Ganz am Anfang des Beispiels – vor allem anderen Inhalt – stehen die Schaltfläche „Musik anhalten“ und ein Lautstärkeregler, der nur diese Musik betrifft. Beides ist mit der Tastatur bedienbar und beschriftet. Wer mit Screenreader arbeitet, erreicht die Schaltfläche als erstes Bedienelement des Beispiels und hat danach Ruhe für die Sprachausgabe (Technik G170: Bedienelement am Anfang der Seite).
  • Beispiel B – nicht erfüllt. Dieselbe Musik, dieselbe Dauer, aber im Beispiel gibt es kein Bedienelement dafür. Die Musik überdeckt die Sprachausgabe; die Lautstärke des Geräts zählt nicht als Ausweg, weil sie die Sprachausgabe mit leiser stellt. Betroffen sind auch Menschen, die Ton schwer ausblenden können. Du merkst es daran, dass du im Beispiel nichts findest, womit der Ton aufhört (Fehlerbild F23).
  • Beispiel C – erfüllt. Es erklingt nur ein kurzer Dreiklang von rund 2 Sekunden. Ton, der nach höchstens 3 Sekunden von selbst endet, braucht kein Bedienelement (Technik G60).

Zur Steuerung der Übungsseite: „Beispiel A laden“ und „Beispiel A stoppen“ (ebenso für B und C) gehören nicht zum Beispiel – sie ersetzen das Neuladen einer Seite. In einer echten Seite stünde im Code etwa ein audio-Element mit autoplay oder ein Skript, das beim Laden abspielt. Hier erzeugt ein Skript die Töne (WebAudio) erst nach deinem Klick; sie sind gedämpft und enden spätestens nach 24 Sekunden.

Nicht-Beeinträchtigung: 1.4.2 gehört mit 2.1.2, 2.2.2 und 2.3.1 zu den vier Kriterien, die für jeden Inhalt einer Seite gelten – auch für Werbung, eingebettete Fremdinhalte oder Bereiche, die nicht zum Prüfumfang gehören. Ein einziger selbst startender Ton ohne Bedienelement macht die ganze Seite für manche Menschen unbenutzbar.

Stolperstelle beim Prüfen: Browser sperren selbst startenden Ton oft, je nachdem, ob du mit der Seite schon einmal etwas getan hast. Bleibt es still, ist das kein Beleg dafür, dass das Kriterium erfüllt ist: Bei anderen Menschen, in einem anderen Browser oder beim zweiten Besuch kann der Ton starten. Sieh im Code nach oder erlaube den automatischen Start für die Seite in den Website-Einstellungen des Browsers und lade neu. Halte den Ton aus dem Konferenzmikrofon heraus.

Automatisch erkennbar? Kaum. axe kennt eine Regel für audio- und video-Elemente mit autoplay (no-autoplay-audio). Ton aus einem Skript wie hier erkennt kein automatisches Werkzeug; in diesen drei Beispielen meldet axe nichts – auch nicht im geladenen Zustand.

Grenzfall: Ein stummes Hintergrundvideo, das von selbst startet, hat keinen Ton – das ist kein Fall für 1.4.2, sondern für 2.2.2. Ton, der erst nach einem Klick auf „Abspielen“ startet, ist nicht betroffen.

Verwandte Kriterien: 2.2.2 (Bewegung anhalten), 1.2.1 und 1.2.2 (Alternativen für Audio- und Videoinhalte).

1.4.3 Kontrast (Minimum)

Stufe AA, Hintergrund beim W3C: Understanding 1.4.3 (englisch)

Text und Bilder eines Textes brauchen zum Hintergrund ein Kontrastverhältnis von mindestens 4,5:1. Für großen Text – ab 18 Punkt (24 CSS-Pixel) oder ab 14 Punkt fett (rund 18,7 CSS-Pixel) – genügen 3:1. Ausgenommen sind inaktive Bedienelemente, reine Dekoration, Schrift als Teil eines Bildes mit wesentlichem anderem Inhalt und Logos.

So prüfst du: Drei Wege, die bei sauberer Messung dieselbe Zahl liefern. (1) Colour Contrast Analyser, Windows und Mac: Pipette auf den Text, Pipette auf den Hintergrund. (2) Entwicklerwerkzeuge in Chrome, Edge oder Firefox: Element untersuchen, im Bereich „Stile“ auf das Farbfeld neben color klicken. (3) Ohne Installation: Farbwerte mit der Pipette ablesen (Windows: Bildschirmausschnitt in Paint einfügen, Farbauswahl; Mac: Digitale Farbanzeige, auf sRGB gestellt) und in den WebAIM Contrast Checker eintragen. Gerundet wird nicht: 4,49:1 ist nicht erfüllt. Miss auch Platzhalter sowie Hover- und Fokuszustände; bei Bildern und Verläufen misst du mit der Pipette an der ungünstigsten Stelle direkt hinter den Zeichen.

Beispiel A: Kontrastjagd, Stellen 1 bis 3

Stelle 1

Am 3. November bleibt die Bücherei wegen einer Schulung geschlossen. Die Rückgabebox am Eingang kannst du trotzdem nutzen. Alle Schließtage ansehen

Stelle 2

Stelle 3

Lesesaal wieder geöffnet

Dienstag bis Samstag, 10 bis 18 Uhr

Beispiel B

Rückgabebox

Die Rückgabebox am Haupteingang ist rund um die Uhr geöffnet. Bitte wirf keine Spiele und keine Hörfiguren ein.

Beispiel C

Rückgabebox

Die Rückgabebox am Haupteingang ist rund um die Uhr geöffnet. Bitte wirf keine Spiele und keine Hörfiguren ein.

Beispiel D

Neu: Spiele ausleihen

Beispiel E

Neu: Spiele ausleihen

Beispiel F

Neu: Spiele ausleihen

Beispiel G

„Die Stadt der Leserinnen“ ist zurzeit ausgeliehen und schon dreimal vorgemerkt.

Beispiel H

Stadtbücherei Lindenau

Beispiel I

Regalbrett mit acht Büchern, die Rücken zeigen nach vorn.

Aus dem Nachlass einer Lindenauer Buchhandlung: acht Bände für das Lesecafé.

Beispiel J

Sommerleseclub: Jetzt anmelden und Stempel sammeln
Auflösung zu 1.4.3

Alle Verhältnisse sind nach der Formel der WCAG gerechnet – aus den Farbwerten im CSS, bei Bildern (Stelle 3, Beispiele H und I) aus den Pixeln der Bilddatei. Mit der Pipette kannst du einige Hundertstel daneben liegen; entscheidend ist, ob dein Wert die Schwelle kreuzt.

Beispiel A: Kontrastjagd, Stellen 1 bis 3
StelleVordergrundHintergrundVerhältnisSchwelleUrteil zu 1.4.3
1 – Fließtext auf Farbfläche#FFFFFF#1F7A5C5,25:14,5:1erfüllt
1, Zusatzstufe – Link bei Hover oder Fokus#FFFFFF#A8D5BA1,63:14,5:1nicht erfüllt
2 – Platzhalter im Eingabefeld#A3A3A3#FFFFFF2,52:14,5:1nicht erfüllt
3 – Text auf dem Foto, über dem Fenster#FFFFFF#C9E3F31,33:13:1 (Überschrift, 24 Pixel fett) und 4,5:1 (zweite Zeile)nicht erfüllt
3 – derselbe Text, über dem Regal#FFFFFF#3A2A20 (Holz), Buchrücken etwas heller13,71:1, auf den Buchrücken mindestens 8,89:1wie obenfür sich genommen ausreichend
  • Beispiel A, Stelle 1 – erfüllt; im Hover- und Fokuszustand des Links nicht erfüllt. Die Farbfläche sieht verdächtig aus, der Fließtext besteht aber mit 5,25:1. Liegt die Maus auf dem Link oder hat er den Fokus, wird sein Hintergrund hellgrün und die Schrift bleibt weiß: 1,63:1. Zustände gehören zur Prüfung – wer den Link mit der Tastatur ansteuert, kann ihn genau in diesem Moment nicht mehr lesen.
  • Beispiel A, Stelle 2 – nicht erfüllt. Platzhaltertext ist Text und braucht 4,5:1; hier sind es 2,52:1. Der Text, den du selbst eintippst, ist dunkel genug. Stolperstelle: Die Pipette trifft leicht den Feldrahmen oder die Kantenglättung der dünnen Schrift – dann lieber den Farbwert aus dem CSS nehmen (::placeholder).
  • Beispiel A, Stelle 3 – nicht erfüllt. Maßgeblich ist der Hintergrund direkt hinter den Zeichen, und zwar an der ungünstigsten Stelle: Der Anfang beider Zeilen steht über dem hellen Fenster (1,33:1). Dass der Rest über dem dunklen Regal gut lesbar ist, rettet den Text nicht. Die Entwicklerwerkzeuge zeigen hier keinen Wert an – das ist die Grenze des Werkzeugs, kein Messfehler. Im Befund notierst du, wo du gemessen hast und bei welcher Fensterbreite, denn der Text verschiebt sich mit der Breite über dem Bild.
  • Beispiel B – nicht erfüllt. Fließtext #A1A7B0 auf #FFFFFF: 2,42:1 bei einer Schwelle von 4,5:1. Hellgrau auf Weiß ist der häufigste Befund überhaupt; betroffen sind Menschen mit eingeschränktem Sehen und alle bei Sonne auf dem Bildschirm.
  • Beispiel C – erfüllt. Derselbe Text in #4A5361 auf #FFFFFF: 7,77:1.
  • Beispiel D – erfüllt. #949494 auf #FFFFFF ergibt 3,03:1. Die Zeile ist 24 CSS-Pixel groß (18 Punkt) und gilt damit als großer Text: Schwelle 3:1, knapp darüber.
  • Beispiel E – nicht erfüllt. Gleiche Größe, aber #969696 auf #FFFFFF: 2,96:1. Mit bloßem Auge ist der Unterschied zu Beispiel D nicht zu sehen – deshalb wird gemessen und nicht gerundet.
  • Beispiel F – nicht erfüllt. Dieselbe Farbe wie in Beispiel D (3,03:1), aber die Zeile ist nur 18 CSS-Pixel groß und fett. Das sind 13,5 Punkt – fetter Text gilt erst ab 14 Punkt (rund 18,7 CSS-Pixel) als groß. Also gilt 4,5:1.
  • Beispiel G – erfüllt (Ausnahme). Die Schaltfläche ist wirklich inaktiv (disabled, im Barrierefreiheitsbaum als deaktiviert geführt, nicht fokussierbar). Ihr Text (#A0A0A0 auf #EFEFEF, 2,27:1) fällt unter die Ausnahme für inaktive Bedienelemente. Ob so blasse Schaltflächen eine gute Idee sind, ist eine Frage der Gebrauchstauglichkeit. Das Gegenstück – eine Schaltfläche, die nur so aussieht – ist Stelle 6 bei 1.4.11.
  • Beispiel H – erfüllt (Ausnahme). Die Wortmarke (#7FBFC9 auf #FFFFFF, 2,06:1) ist ein Logo; für Text in Logos gibt es keine Kontrastanforderung. Der Alternativtext sorgt für 1.1.1.
  • Beispiel I – erfüllt (Ausnahme). Die Titel auf den Buchrücken haben nur rund 2,2:1 bis 2,5:1. Sie sind aber Schrift als Teil eines Bildes mit wesentlichem anderem Inhalt – beiläufig, nicht die Information, um die es geht. Dasselbe gilt für ein Straßenschild im Foto und für rein dekorative Schrift. Die Bildunterschrift darunter ist normaler Text und besteht.
  • Beispiel J – nicht erfüllt. Weiße Überschrift (24 CSS-Pixel fett, also großer Text mit Schwelle 3:1) auf einem Verlauf von #0B2A5B nach #8EC3F0. Gemessen wird an der hellsten Stelle, über der noch Text steht – am Zeilenende. Der Verlauf erreicht seine hellste Farbe schon bei 60 % der Kastenbreite. Links außen sind es 14,03:1, bei 30 % der Breite (#4C76A6) 4,72:1, bei 42 % (#6795C3) 3,15:1, bei 45 % (#6D9DCB) 2,86:1 und ab 60 % durchgehend 1,87:1. Ab rund 43 % der Kastenbreite ist 3:1 unterschritten. Die längste Zeile reicht bei jeder Fensterbreite und in jeder geprüften Schrift über 60 % hinaus – an ihrem Ende steht Weiß auf #8EC3F0, also 1,87:1. Die Durchschnittsfarbe des Verlaufs würde das beschönigen; „nicht automatisch messbar“ heißt nicht „nicht prüfbar“.

Automatisch erkennbar? Teilweise – zuverlässig nur bei einfarbigem Hintergrund. axe meldet hier mit der Regel color-contrast die Beispiele B, E und F. Den Platzhalter (Stelle 2) und den Hover-Zustand (Stelle 1) prüft axe nicht; den Text auf dem Foto (Stelle 3) und auf dem Verlauf (Beispiel J) führt es nur unter „zu prüfen“. Inaktive Schaltflächen und Bilder lässt es aus.

Grenzfall: Halbtransparenter Text wird mit der sichtbaren Mischfarbe gemessen. Liegt ein Schatten oder eine Kontur um die Schrift, misst du am sichtbaren Ergebnis. Weichen zwei Messwege voneinander ab, nimm den ungünstigeren Wert und begründe ihn – außer die Abweichung kommt erkennbar von der Kantenglättung.

Verwandte Kriterien: 1.4.11 (Kontrast von Bedienelementen und Grafiken, 3:1), 1.4.1 (fragt nicht nach dem Kontrast, sondern ob Farbe das einzige Merkmal ist), 1.4.5 (Bilder eines Textes).

1.4.4 Textgröße ändern

Stufe AA, Hintergrund beim W3C: Understanding 1.4.4 (englisch)

Text muss sich ohne Hilfsmittel auf 200 % vergrößern lassen, ohne dass Inhalt oder Funktion verloren geht: nichts abgeschnitten, nichts überlappt, alles bleibt bedienbar. Ausgenommen sind Untertitel und Bilder eines Textes.

So prüfst du: Browserfenster möglichst breit ziehen (mindestens 1280 CSS-Pixel), Zoom auf 100 % zurücksetzen (Strg + 0, am Mac Cmd + 0), dann mit Strg + + bzw. Cmd + + auf 200 % zoomen. Gemeint sind 200 % im Browser, nicht die Skalierung von Windows oder macOS. Geh alles durch: Wird Text abgeschnitten, überlappt etwas, verschwindet ein Bedienelement? Notiere die Fensterbreite. Zusatzprüfung mit reinem Textzoom: in Firefox im Menü „Ansicht“ unter „Zoom“ die Option „Nur Text zoomen“, in Chrome und Edge die Schriftgröße in den Einstellungen unter „Darstellung“, in Safari das Menü „Darstellung“ bei gedrückter Wahltaste.

Beispiel A

Gruppenraum reservieren

Die beiden Gruppenräume im ersten Stock kannst du mit gültigem Büchereiausweis für bis zu drei Stunden am Tag reservieren. Eine Reservierung ist frühestens vierzehn Tage im Voraus möglich. Wer zehn Minuten nach Beginn nicht da ist, verliert den Anspruch – der Raum wird dann wieder freigegeben.

Stadtbücherei Lindenau · Am Markt 3 · Telefon 0000 123456 · Dienstag bis Samstag von 10 bis 18 Uhr geöffnet

Beispiel B

Gruppenraum reservieren

Die beiden Gruppenräume im ersten Stock kannst du mit gültigem Büchereiausweis für bis zu drei Stunden am Tag reservieren. Eine Reservierung ist frühestens vierzehn Tage im Voraus möglich. Wer zehn Minuten nach Beginn nicht da ist, verliert den Anspruch – der Raum wird dann wieder freigegeben.

Stadtbücherei Lindenau · Am Markt 3 · Telefon 0000 123456 · Dienstag bis Samstag von 10 bis 18 Uhr geöffnet

Beispiel C

Bitte gib alle Medien bis zum Ende der Leihfrist zurück.

Beispiel D

Lesesommer 2026: Für jedes gelesene Buch gibt es einen Stempel im Lesepass.

Beispiel E

Eine eigene kleine Seite. Öffne sie auch auf einem Smartphone oder Tablet und vergrößere dort mit zwei Fingern.

Auflösung zu 1.4.4
  • Beispiel A – erfüllt. Bei 200 % bricht die Navigation in mehrere Zeilen um, der Hinweiskasten wächst mit dem Text, die Beschriftungen stehen über den Feldern und die Fußzeile bricht um. Nichts geht verloren. Im Beispiel ist keine Höhe und keine Zeilenhöhe in Pixeln festgelegt; auch wenn du in Chrome oder Edge nur die Schriftgröße verdoppelst, wächst alles mit.
  • Beispiel B – nicht erfüllt. Dieselbe Seite, aber für schmale Ansichtsbereiche (unter 1280 CSS-Pixel – bei 200 % also in jedem Fenster bis rund 2500 Pixel Breite) gelten feste Maße: (1) Die Navigation hat eine feste Höhe von 44 Pixeln mit overflow: hidden; die Links der zweiten Zeile sind nicht mehr zu sehen. Mit Tab erreichst du sie noch, dann rutscht die Leiste und die ersten Links verschwinden. (2) Der Hinweiskasten ist 72 Pixel hoch bei 24 Pixeln Zeilenhöhe; nach zwei Zeilen ist der Text abgeschnitten. (3) Im Formular stehen die Beschriftungen einzeilig in einer 140 Pixel breiten Spalte und laufen unter die Eingabefelder. (4) Die Fußzeile wird mit „…“ gekürzt; die Öffnungszeiten fehlen, je nach Breite auch die Telefonnummer. Das ist das typische Fehlerbild F69: Text und Bedienelemente werden bei 200 % abgeschnitten oder verdeckt. Betroffen sind Menschen mit eingeschränktem Sehen, die ohne Vergrößerungssoftware arbeiten.
  • Beispiel C – erfüllt (Grenzfall). Der Kasten hat feste Maße in Pixeln (200 × 124) und overflow: hidden. Beim Seitenzoom wächst er mit, der Text bleibt vollständig. Mit reinem Textzoom wächst nur die Schrift – dann wird der Satz abgeschnitten. Kursposition: Ein funktionierender Zoom des Browsers genügt; der Fund mit Textzoom gehört als Hinweis in den Bericht, nicht als Verstoß, weil manche Menschen nur die Schrift vergrößern.
  • Beispiel D – nicht erfüllt. Die Schriftgröße ist nur in Viewport-Einheiten gesetzt (font-size: 1.5vw). Beim Seitenzoom wird der Ansichtsbereich in CSS-Pixeln halb so breit, die Schrift also in CSS-Pixeln halb so groß – auf dem Bildschirm bleibt sie gleich. In einem 1280 Pixel breiten Fenster sind es 19,2 Pixel bei 100 % und 9,6 CSS-Pixel bei 200 %. Der Text lässt sich mit dem Seitenzoom nicht vergrößern (Fehlerbild F94) – und das in jedem Fenster, egal wie breit.
  • Beispiel E – nicht erfüllt. Die Seite sperrt das Vergrößern über die Angabe <meta name="viewport" content="… maximum-scale=1, user-scalable=no">. Auf Smartphones und Tablets ist das Aufziehen mit zwei Fingern oft der einzige Weg zu größerem Text; er ist hier versperrt. Am Desktop merkst du nichts davon, weil der Seitenzoom weiter funktioniert – deshalb im Quelltext nachsehen. Manche Browser (zum Beispiel Safari auf dem iPhone) ignorieren die Sperre inzwischen; ein Verstoß bleibt es.

Seitenzoom und Textzoom: Der Seitenzoom vergrößert alles – Schrift, Bilder, Abstände und alle Maße in Pixeln. Für die Seite wirkt er wie ein schmaleres Fenster: 200 % in einem 1280 Pixel breiten Fenster entsprechen einem Ansichtsbereich von 640 CSS-Pixeln. Fehler entstehen deshalb dort, wo Text bei weniger Platz umbricht und der Kasten nicht mitwächst, oder wo das Layout für schmale Fenster nie mit langen Texten geprüft wurde. Der reine Textzoom vergrößert nur die Schrift; Kästen mit Maßen in Pixeln bleiben, wie sie sind. Die Schriftgröße in den Einstellungen von Chrome und Edge wirkt zudem nur auf Text, der relativ zur Browserschrift gesetzt ist.

Stolperstelle: Beispiel B zeigt die Fehler immer dann, wenn der Ansichtsbereich schmaler als 1280 CSS-Pixel ist. In einem schmalen Fenster siehst du sie schon bei 100 %; in einem sehr breiten Fenster (ab 2560 Pixel) bleibt bei 200 % das breite Layout aktiv und alles sieht richtig aus. Deshalb gehört die Fensterbreite in jeden Befund. Waagerechtes Scrollen bei 200 % ist für 1.4.4 kein Verstoß – das regelt 1.4.10 bei 400 %.

Automatisch erkennbar? Nur die gesperrte Zoom-Angabe: axe (Regel meta-viewport) und Lighthouse melden Beispiel E, wenn du sie auf der Einzelseite laufen lässt. Abgeschnittenen und überlappenden Text findet kein automatisches Werkzeug; in den Beispielen A bis D meldet axe nichts.

Grenzfall: Text, der über eine Schaltfläche hinausläuft, aber lesbar und bedienbar bleibt, ist kein Verlust – höchstens ein Hinweis. Wird die Kopfzeile bei 200 % so hoch, dass kaum noch Inhalt zu sehen ist, aber alles erreichbar bleibt, ist das ebenfalls ein Hinweis.

Verwandte Kriterien: 1.4.10 (Umfluss bei 400 % bzw. 320 CSS-Pixel Breite), 1.4.12 (Textabstände), 1.4.5 (Schrift in Bildern lässt sich gar nicht anpassen).

1.4.5 Bilder eines Textes

Stufe AA, Hintergrund beim W3C: Understanding 1.4.5 (englisch)

Lässt sich eine Darstellung mit echtem Text umsetzen, muss es echter Text sein und keine Grafik. Ausgenommen sind Textbilder, die sich anpassen lassen, und Darstellungen, bei denen genau diese Form wesentlich ist, zum Beispiel ein Logo.

So prüfst du: Versuche, den Text mit der Maus zu markieren. Zoome auf 400 % (Strg + +, am Mac Cmd + +): Wird die Schrift unscharf oder pixelig? Untersuche das Element: Ist es ein img, ein Hintergrundbild oder Text?

Beispiel A

Öffnungszeiten ab 1. November: Montag geschlossen, Dienstag bis Freitag 10 bis 18 Uhr, Samstag 10 bis 14 Uhr, Sonntag geschlossen.

Beispiel B

Öffnungszeiten ab 1. November
Montaggeschlossen
Dienstag bis Freitag10 bis 18 Uhr
Samstag10 bis 14 Uhr
Sonntaggeschlossen

Beispiel C

Stadtbücherei Lindenau
Auflösung zu 1.4.5
  • Beispiel A – nicht erfüllt. Die Öffnungszeiten sind ein Bild (img). Der Alternativtext ist vollständig, 1.1.1 ist also erfüllt – aber eine Liste mit Zeiten lässt sich ohne Weiteres mit HTML und CSS darstellen, wie Beispiel B zeigt. Wer die Schrift vergrößern, die Farben ändern oder mehr Zeilenabstand braucht, kann das hier nicht. Bei 400 % wird die Schrift unscharf, und in einem schmalen Fenster schrumpft sie mit dem Bild, statt umzubrechen.
  • Beispiel B – erfüllt. Dieselben Öffnungszeiten in derselben Gestaltung, aber als Tabelle mit echtem Text: markierbar, bei jeder Vergrößerung scharf, von eigenen Farb- und Abstandseinstellungen erreichbar. Die Gestaltung kommt allein aus dem CSS. Nebenbei kennt ein Screenreader hier Zeilen und Spalten; im Bild gibt es nur einen langen Alternativtext.
  • Beispiel C – erfüllt (Ausnahme). Das ist ein Logo. Bei Logos und Wortmarken gilt die Darstellung als wesentlich; sie dürfen als Bild eingebunden sein. Einen Alternativtext brauchen sie trotzdem (1.1.1).

Automatisch erkennbar? Nein. Kein automatisches Werkzeug erkennt, ob ein Bild Text zeigt; axe meldet in diesen drei Beispielen nichts. Du findest Textbilder nur mit den Augen, mit dem Markierversuch und im Code.

Grenzfall: Ein Screenshot einer Software-Oberfläche in einer Anleitung fällt unter die Ausnahme – hier kommt es auf genau diese Darstellung an. Eine Preistabelle als Screenshot dagegen nicht. Schrift auf einem Foto mit viel anderem Inhalt (ein Straßenschild) ist nach der Definition gar kein Bild eines Textes.

Stolperstelle: Markierbarkeit ist nur ein Indiz. Manche Seiten legen unsichtbaren Text über eine Grafik. Text in SVG und in Web-Schriften ist echter Text, Text auf einem canvas nicht.

Verwandte Kriterien: 1.1.1 (der Alternativtext für das Bild), 1.4.3 (auch Bilder eines Textes brauchen Kontrast), 1.4.4 und 1.4.12 (Textgröße und Textabstand lassen sich nur bei echtem Text anpassen).

1.4.10 Umfluss (Reflow)

Stufe AA, Hintergrund beim W3C: Understanding 1.4.10 (englisch)

Bei 320 CSS-Pixeln Breite – so breit ist ein 1280 Pixel breites Fenster bei 400 % Zoom – ordnet sich der Inhalt so neu an, dass nichts verloren geht und man nur noch in eine Richtung scrollen muss. Ausgenommen sind nur die Teile, die für Nutzung oder Bedeutung ein zweidimensionales Layout brauchen, etwa Karten, Diagramme oder Datentabellen.

So prüfst du: Öffne das Beispiel in einem neuen Tab. Weg 1: Zoome mit Strg + + (Mac: Cmd + +), bis die Maßangabe unten rechts auf der Beispielseite als Breite 320 oder weniger zeigt – meist bei 400 %. Reicht der Zoom deines Browsers nicht so weit, zieh das Fenster schmaler. Weg 2: Öffne die Entwicklerwerkzeuge (F12, Mac: Cmd + Wahltaste + I), schalte den Gerätemodus ein (Strg + Umschalt + M; Mac: in Chrome und Edge Cmd + Umschalt + M, in Firefox Cmd + Wahltaste + M) und stell 320 Pixel Breite ein; in Safari heißt der Weg „Responsive Design-Modus“ im Menü „Entwickler“. Zurück auf 100 % kommst du mit Strg + 0 (Mac: Cmd + 0).

  • Muss man waagerecht scrollen, um Text zu lesen?
  • Gehen Inhalte oder Funktionen verloren – Menüeinträge, Formularfelder, Schaltflächen?
  • Wie viel Fläche bleibt neben Kopfzeile und Cookie-Hinweis für den Inhalt?
  • Greift bei einem Fund eine Ausnahme: Karte, Datentabelle, Diagramm, Werkzeugleiste?
Breite anzeigen

Breiten-Lesezeichen für beliebige Seiten: Blende die Lesezeichenleiste ein (Strg + Umschalt + B, Mac: Cmd + Umschalt + B) und zieh den Link dorthin. Oder leg ein Lesezeichen an und trag als Adresse javascript:alert(document.documentElement.clientWidth) ein. Hier angeklickt, zeigt der Link die Breite dieser Seite daneben an. Die drei Beispielseiten haben eine eigene Maßangabe unten rechts.

Beispiel A

Seite „Leseausweis verlängern“ der Stadtbücherei Lindenau mit Kopfzeile und Navigation, Cookie-Hinweis, Anleitung, Formular, zwei kleinen Tabellen und Kontaktangaben.

Beispiel A in neuem Tab öffnen

Beispiel C

Seite „Veranstaltungen, Zahlen und Anfahrt“ in fünf Teilen: Veranstaltungstabelle, Säulendiagramm, Stadtplan in zwei Fassungen, Textfeld mit Werkzeugleiste. Beurteile jeden Teil einzeln.

Beispiel C in neuem Tab öffnen

Auflösung zu 1.4.10
  • Beispiel A – erfüllt. Bei 320 CSS-Pixeln stehen die Spalten untereinander, die Navigation bricht um, Felder und Tabellen passen in die Breite. Es gibt nur senkrechtes Scrollen, alle Inhalte und Funktionen bleiben erreichbar. Die Kopfzeile haftet nur in großen Fenstern am oberen Rand, der Cookie-Hinweis steht bei kleinem Fenster im Textfluss – beides regelt eine Media Query mit Mindestbreite (60 rem) und Mindesthöhe (40 rem).
  • Beispiel B – nicht erfüllt. Drei Befunde:
    1. Die Seite ist fest 960 Pixel breit. Bei 320 Pixeln muss man für jede Textzeile waagerecht und für die Seite senkrecht scrollen – genau das schließt das Kriterium aus. Wer mit starker Vergrößerung liest, verliert dabei ständig die Zeile.
    2. Die Kopfzeile ist fest am Fenster verankert (position: fixed) und scrollt deshalb nicht mit. Von den sechs Einträgen der Navigation sind je nach Schrift nur die ersten ein bis zwei ganz zu sehen; mindestens die letzten drei lassen sich mit Maus oder Finger nicht erreichen. Das ist Verlust von Funktion.
    3. Bei 400 % in einem üblichen Fenster bleiben rund 175 Pixel Höhe. Die Kopfzeile belegt davon 100, der Cookie-Hinweis braucht bei 320 Pixeln Breite den Rest und mehr: Vom Inhalt ist nichts zu sehen, und der Hinweis selbst ragt oben aus dem Fenster – sein Anfang ist nicht lesbar und lässt sich nicht herbeiscrollen. Solange er offen ist, ist das Verlust von Inhalt. Nach dem Schließen bleiben unter der Kopfzeile etwa 75 Pixel, rund drei Textzeilen: Die Seiteninhalte sind dann erreichbar, das Lesen ist mühsam – für sich genommen ein Hinweis im Bericht.
    Verletzt außerdem: Schon bei 200 % (640 Pixel) liegt mindestens der letzte Navigationseintrag außerhalb der festen Kopfzeile und ist mit der Maus nicht erreichbar (1.4.4). Die abgeschnittenen Einträge bekommen den Tastaturfokus, ohne dass man ihn sieht (2.4.7). Solange der Cookie-Hinweis offen ist, verdeckt er bei 400 % fokussierte Elemente vollständig (2.4.11).
  • Beispiel C – vier Teile erfüllt, Teil 3 nicht erfüllt. Die Seite selbst fließt um; nur einzelne Teile scrollen in sich.
    • Teil 1, Datentabelle – erfüllt (Ausnahme). Sieben Spalten brauchen ein zweidimensionales Layout. Die Tabelle rollt in einem eigenen, per Tastatur erreichbaren Bereich; die Seite nicht. Der Text in den Zellen bricht um.
    • Teil 2, Diagramm – erfüllt (Ausnahme). Würde das Diagramm auf 288 Pixel schrumpfen, wären Achsen und Werte nicht mehr lesbar. Es rollt in sich; die Werte stehen zusätzlich als Text darunter.
    • Teil 3, Stadtplan Fassung 1 – nicht erfüllt. Die Kartenfläche darf in beide Richtungen scrollen. Die Schaltflächen Plus und Minus hängen aber an einer Leiste mit fester Breite von 30 rem in der Karte. In breiten Fenstern stehen sie immer im Bild, unterhalb von rund 500 Pixeln Breite rutschen sie rechts hinaus. Mit der Maus erreicht man sie dann nur, indem man die Karte bis ganz nach rechts verschiebt. Kursposition zum Streitfall: Die Karte ist ausgenommen, ihre Bedienelemente nicht. Verletzt außerdem: Per Tab bekommt Plus bei schmalem Fenster den Fokus, ohne dass man Schaltfläche oder Fokusrahmen sieht (2.4.7).
    • Teil 4, Stadtplan Fassung 2 – erfüllt. Dieselbe Karte, aber Plus und Minus sind am Rahmen der Karte befestigt und rücken in schmalen Fenstern an dessen rechten Rand. Sie bleiben bei jeder Breite und Zoomstufe sichtbar. Das Suchfeld bricht in beiden Fassungen um.
    • Teil 5, Werkzeugleiste – erfüllt (Ausnahme, eng auszulegen). Das Understanding nennt Oberflächen, bei denen eine Werkzeugleiste beim Bearbeiten im Blick bleiben muss. Die Leiste bleibt einzeilig und rollt in sich; umgebrochen würde sie bei 400 % das Textfeld aus dem Fenster schieben. Alle Schaltflächen bleiben per Tastatur und durch Scrollen der Leiste erreichbar. Eine gewöhnliche Navigation oder Filterleiste fällt nicht unter diese Ausnahme.

Die Zeile „Zurück zur Übungsseite“ und die Maßangabe unten rechts auf den Beispielseiten gehören zur Übungsseite, nicht zum Beispiel. Die Maßangabe zeigt Breite und Höhe des Ansichtsfensters ohne Bildlaufleisten.

Automatisch erkennbar? Nein. axe meldet auf keiner der drei Beispielseiten etwas zum Umfluss – auch nicht auf Beispiel B. Geprüft wird von Hand, bei 320 CSS-Pixeln.

Zoom und Gerätemodus weichen ab: Der Gerätemodus stellt nur die Breite ein und lässt das Fenster hoch. Kopfzeile und Cookie-Hinweis von Beispiel B wirken dort harmlos. Beim Zoom schrumpft auch die Höhe – erst dann zeigt sich, wie wenig Fläche bleibt. Maßgeblich ist der Zoom. Außerdem verändert die Skalierung des Betriebssystems die CSS-Breite eines Fensters: messen statt rechnen.

Grenzfall: Klappt die Navigation bei 320 Pixeln in ein Menü mit Schaltfläche zusammen, ist das kein Verlust, solange alle Einträge dort erreichbar sind. Eine feste Kopfzeile, die viel Höhe kostet, ist ein Hinweis; ein Verstoß wird daraus, wenn Inhalte dauerhaft nicht mehr sichtbar oder erreichbar sind.

Verwandte Kriterien: 1.4.4 fragt bei 200 %, ob Text verloren geht – waagerechtes Scrollen ist dort noch kein Verstoß. 2.4.11 gilt, wenn eine feste Kopfzeile das fokussierte Element verdeckt. 1.4.12 prüft die Abstände im Text.

1.4.11 Nicht-Text-Kontrast

Stufe AA, Hintergrund beim W3C: Understanding 1.4.11 (englisch)

Alles, was kein Text ist und was man braucht, um ein Bedienelement, seinen Zustand oder eine Grafik zu erkennen, braucht mindestens 3:1 zu den Farben direkt daneben: Feldgrenzen, Symbole ohne Text, Häkchen, Fokusrahmen, Linien eines Diagramms. Ausgenommen sind inaktive Bedienelemente, vom Browser bestimmtes und unverändertes Aussehen sowie Darstellungen, die genau so wesentlich sind (Logo, Flagge, Foto).

So prüfst du: Frage zuerst: Brauche ich dieses Teil, um das Element oder seinen Zustand zu erkennen? Nur das wird gemessen. Dann mit denselben Werkzeugen wie bei 1.4.3 messen – Pipette des Colour Contrast Analyser oder Farbwerte aus den Entwicklerwerkzeugen in einen Kontrastrechner eintragen – und zwar gegen die Farben, an die das Teil grenzt. Für den Fokusrahmen gehst du mit Tab auf das Element (am Mac muss die Tastaturnavigation eingeschaltet sein, in Safari zusätzlich Wahltaste + Tab). Ob ein Element wirklich inaktiv ist, siehst du im Barrierefreiheitsbaum der Entwicklerwerkzeuge – oder du probierst, ob es reagiert.

Beispiel A: Kontrastjagd, Stellen 4 bis 6

Stelle 4

Hinweise zum Datenschutz lesen

Stelle 5

Stelle 6

Stelle 4: Gehe mit der Tabulatortaste in das Eingabefeld und auf den Link darunter.

Beispiel B

Beispiel C

Beispiel D

Erinnerung vor Ablauf der Leihfrist

Beispiel E

Erinnerung vor Ablauf der Leihfrist

Sieh dir auch den Fokusrahmen der Kästchen an.

Beispiel F

Anteile an den Ausleihen 2025
Bücher55 % Hörbücher25 % Filme20 %

Beispiel G

Beispiel H

Vormerken kannst du erst, wenn du angemeldet bist.

Auflösung zu 1.4.11

Alle Verhältnisse sind aus den Farbwerten im CSS nach der Formel der WCAG gerechnet.

Beispiel A: Kontrastjagd, Stellen 4 bis 6
StelleGemessenFarbenVerhältnisSchwelleUrteil
4 – FokusrahmenRahmen gegen die angrenzende Fläche innen und außen#8FC3F5 auf #FFFFFF1,86:13:11.4.11 nicht erfüllt
5 – Symbol-SchaltflächeLupe gegen Hintergrund#6B6B6B auf #FFFFFF5,33:13:11.4.11 erfüllt
6 – Schaltfläche, die inaktiv aussieht: TextText gegen Fläche der Schaltfläche#A6A6A6 auf #EDEDED2,08:14,5:11.4.3 nicht erfüllt
6 – dieselbe Schaltfläche: GrenzeRand gegen Seite#D4D4D4 auf #FFFFFF1,48:1keine – der Text macht die Schaltfläche erkennbar1.4.11 nicht verletzt
Alle sechs Stellen der Kontrastjagd: Welches Kriterium gilt?
StelleKriteriumSchwelleVerhältnisUrteil
1 – Fließtext auf Farbfläche1.4.34,5:15,25:1 (Link bei Hover oder Fokus: 1,63:1)erfüllt; im Hover- und Fokuszustand des Links nicht erfüllt
2 – Platzhalter1.4.34,5:12,52:1nicht erfüllt
3 – Text auf Foto1.4.33:1 und 4,5:11,33:1 an der hellsten Stellenicht erfüllt
4 – Fokusrahmen1.4.113:11,86:1nicht erfüllt
5 – Symbol-Schaltfläche1.4.113:15,33:1erfüllt
6 – Schaltfläche, die inaktiv aussieht1.4.3 für den Text; 1.4.11 verlangt für den Rand nichts4,5:12,08:11.4.3 nicht erfüllt
  • Beispiel A, Stelle 4 – nicht erfüllt. Eingabefeld und Link haben einen eigenen Fokusrahmen in Hellblau. Er ist da – 2.4.7 fragt nur danach –, hat aber zu allen angrenzenden Flächen nur 1,86:1. Ob der Fokusrahmen genug Kontrast hat, ist 1.4.11. Betroffen sind sehende Menschen, die mit der Tastatur arbeiten und wenig Kontrast wahrnehmen. Eindeutig ist der Fall am Link: Dort ist der Ring das einzige Zeichen für den Fokus. Im Eingabefeld blinkt zusätzlich der Textcursor, der ebenfalls als Fokusanzeige gilt – ein guter Punkt für die Diskussion, das Urteil hängt am Link. Zum Vergleich: Der Fokusrahmen der Übungsseite (#6A1B9A) hat auf Weiß 9,39:1.
  • Beispiel A, Stelle 5 – erfüllt. Die Lupe steht allein, ohne sichtbaren Text – sie ist das, woran man die Schaltfläche erkennt, und braucht 3:1. Mit 5,33:1 besteht sie. Einen Rand braucht die Schaltfläche nicht.
  • Beispiel A, Stelle 6 – 1.4.3 nicht erfüllt, 1.4.11 nicht verletzt. Die Schaltfläche sieht inaktiv aus, ist es aber nicht: kein disabled, im Barrierefreiheitsbaum nicht als deaktiviert geführt, sie nimmt den Fokus an und reagiert auf Klick. Damit greift die Ausnahme nicht, und der Text braucht 4,5:1 – er hat 2,08:1. Den blassen Rand misst man mit, er ist aber keine Pflicht, weil der Text die Schaltfläche erkennbar macht. Wäre sie wirklich inaktiv, griffe bei beiden Kriterien die Ausnahme (siehe Beispiel H und bei 1.4.3 das Beispiel G).
  • Beispiel B – nicht erfüllt. Das Eingabefeld ist nur an einer Linie unten zu erkennen, und die hat mit #D0D0D0 auf #FFFFFF nur 1,54:1. Die Linie ist hier das einzige Merkmal des Feldes; wer sie nicht sieht, findet keine Stelle zum Hineinklicken.
  • Beispiel C – erfüllt. Dasselbe Feld mit einer Linie in #5B6577: 5,88:1. Ein Rahmen rundherum ist nicht verlangt.
  • Beispiel D – nicht erfüllt. Zwei Messungen: Die Kästchengrenze (#767676 auf #FFFFFF, 4,54:1) besteht. Der Zustand „angehakt“ aber nicht: Der weiße Haken auf der hellblauen Füllung #CFE3F7 hat nur 1,31:1 – und der Haken ist das, woran man den Zustand erkennt. Die Kästchen sind per CSS gestaltet, also gilt 3:1 auch dafür.
  • Beispiel E – erfüllt (Ausnahme). Die Kästchen und ihr Fokusrahmen kommen unverändert vom Browser; für dieses Beispiel setzt das CSS den Fokusrahmen der Übungsseite ausdrücklich auf den Auslieferungszustand zurück (outline: revert). Vom Browser bestimmtes, unverändertes Aussehen ist ausgenommen. Sobald eine Seite Farbe, Breite oder Stil ändert, gilt 3:1. Aktuelle Chromium-Browser zeichnen ohnehin einen zweifarbigen Ring, der auf hellen und dunklen Flächen sichtbar bleibt.
  • Beispiel F – erfüllt (Grenzfall). Die Segmente haben untereinander nur 1,04:1 bis 1,28:1 und zum Weiß höchstens 2,09:1. Weil Kategorie und Wert als Text in jedem Segment stehen (#16233A, mindestens 7,51:1), braucht man die Farbflächen nicht mehr, um das Diagramm zu verstehen. Ohne diese Beschriftung bräuchte es 3:1 zwischen angrenzenden Segmenten oder Trennlinien – und eine Legende nur über Farbe wäre zusätzlich 1.4.1.
  • Beispiel G – erfüllt (Grenzfall). Das Druckersymbol ist blass (#B0B0B0 auf #FFFFFF, 2,17:1), aber der sichtbare Text daneben sagt dasselbe. Das Symbol wird zum Verstehen nicht gebraucht. Stünde es allein, bräuchte es 3:1.
  • Beispiel H – erfüllt (Ausnahme). Auswahlfeld und Symbol-Schaltfläche sind wirklich inaktiv (disabled). Ihr blasser Rand (#D0D0D0, 1,54:1; die Abblendung, mit der Chrome und Edge inaktive Auswahlfelder zeichnen, ist hier abgeschaltet, damit Pipette und CSS denselben Wert liefern) und das blasse Symbol (#C8C8C8, 1,67:1) fallen unter die Ausnahme für inaktive Bedienelemente. Dass darüber steht, warum nichts geht, ist gute Praxis.

Automatisch erkennbar? Nein. axe, WAVE und Lighthouse messen nur Textkontraste; axe meldet in Beispiel A deshalb nur den Text von Stelle 6 (Regel color-contrast, also 1.4.3). Rahmen, Symbole, Häkchen und Fokusrahmen prüfst du von Hand.

Grenzfall: „Angrenzend“ heißt: die Farbe direkt daneben. Ein Rahmen um ein weißes Feld auf hellgrauer Seite wird gegen das Feldinnere und gegen die Seite gemessen; es genügt, wenn die Grenze auf einer Seite 3:1 erreicht. Nicht verlangt sind 3:1 zwischen zwei Zuständen desselben Elements – etwa zwischen dem normalen Aussehen und dem bei Hover.

Verwandte Kriterien: 1.4.3 (Text), 2.4.7 (ob es einen Fokusrahmen gibt), 1.4.1 (Zustand oder Zuordnung nur über Farbe), 4.1.2 (der Zustand „inaktiv“ muss auch im Code stehen).

1.4.12 Textabstand

Stufe AA, Hintergrund beim W3C: Understanding 1.4.12 (englisch)

Manche Menschen lesen nur mit mehr Abstand zwischen Zeilen, Absätzen, Buchstaben und Wörtern und stellen sich das selbst ein. Die Seite muss diese Abstände nicht anbieten, aber aushalten: Werden alle vier Werte gesetzt, darf kein Inhalt und keine Funktion verloren gehen.

So prüfst du: Stell 100 % Zoom ein und mach ein Bildschirmfoto. Setz dann die vier Werte – Zeilenhöhe 1,5 · Abstand nach Absätzen 2 · Zeichenabstand 0,12 · Wortabstand 0,16, jeweils mal Schriftgröße – mit dem Lesezeichen oder mit der Schaltfläche unten und vergleiche. Ein Befund ist nur, was verloren geht: abgeschnittener oder überdeckter Text, eine Funktion, die nicht mehr erreichbar ist. Was nur anders aussieht, ist höchstens ein Hinweis.

Textabstand 1.4.12

Lesezeichen für beliebige Seiten: Blende die Lesezeichenleiste ein (Strg + Umschalt + B, Mac: Cmd + Umschalt + B) und zieh den Link dorthin. In Safari legst du ein Lesezeichen an und ersetzt dessen Adresse durch die Adresse dieses Links. Ein Klick setzt die vier Werte auf der ganzen Seite, ein zweiter nimmt sie zurück.

Steuerung der Übungsseite für den Fall, dass Lesezeichen mit Skript bei dir gesperrt sind. Sie wirkt nur auf die Beispiele A bis C und gehört nicht zum Beispiel.

Dritter Weg, ohne Lesezeichen und ohne Schaltfläche: In den Entwicklerwerkzeugen unter „Stile“ (Firefox: „Regeln“) eine neue Regel anlegen und diese Kopiervorlage einsetzen.

* { line-height: 1.5 !important; letter-spacing: 0.12em !important; word-spacing: 0.16em !important; }
p { margin-bottom: 2em !important; }

Beispiel A

Neue Hörbücher

Zwölf neue Titel stehen im Regal neben dem Infotresen.

Leihfrist: 14 Tage

Termine für Kinder

Vorlesestunde am Dienstag um 16 Uhr in der Kinderbücherei.

Anmeldung bis 2. November

Leihfristen
MediumFrist
Bücher28 Tage
Zeitschriften14 Tage
Filme, Spiele7 Tage

Beispiel B

Neue Hörbücher

Zwölf neue Titel stehen im Regal neben dem Infotresen.

Leihfrist: 14 Tage

Termine für Kinder

Vorlesestunde am Dienstag um 16 Uhr in der Kinderbücherei.

Anmeldung bis 2. November

Leihfristen
MediumFrist
Bücher28 Tage
Zeitschriften14 Tage
Filme, Spiele7 Tage

Auflösung zu 1.4.12
  • Beispiel A – nicht erfüllt. Kästen mit fester Höhe oder Breite halten den größeren Text nicht aus. Fünf Stellen:
    • Navigation: „Termine für Kinder“ und „Ausweis verlängern“ brechen in eine zweite Zeile um. Die Reiter sind aber fest 2,5 rem hoch und schneiden ab (overflow: hidden). Zu lesen ist nur noch „Termine für“ und „Ausweis“.
    • Karten: feste Höhe, der Überlauf ist versteckt. Von „Leihfrist: 14 Tage“ bleibt nur „Leihfrist: 14“ – „Tage“ ist abgeschnitten. Von „Anmeldung bis 2. November“ bleibt „Anmeldung bis“ – das Datum fehlt.
    • Tabelle: feste Spaltenbreiten, kein Umbruch, Überlauf versteckt. Von „Zeitschriften“, „Filme, Spiele“, „28 Tage“ und „14 Tage“ fehlt jeweils das Ende.
    • Beschriftung: Sie wächst von drei auf vier Zeilen, ihr Kasten ist aber auf drei Zeilen festgelegt. Die vierte Zeile liegt im Eingabefeld und überlagert sich mit dem, was man dort eintippt.
    • Schaltfläche: feste Breite, kein Umbruch, Überlauf versteckt – von „Ausweis verlängern“ fehlt das Ende.
    Der Vorher-Nachher-Vergleich gilt für Arial, Helvetica oder Liberation Sans; fehlen alle drei, kann A schon vorher eng sein. Das trifft Menschen, die mit eigenen Abständen lesen, etwa bei Legasthenie oder eingeschränktem Sehen: Ihnen fehlen Termin, Frist und Teile der Navigation.
  • Beispiel B – erfüllt. Dieselben Bausteine mit Mindesthöhe und Mindestbreite statt fester Maße. Reiter, Karten und Schaltfläche wachsen mit, die Tabellenzellen brechen um, die Beschriftung schiebt das Feld nach unten. Es sieht anders aus, aber alles bleibt lesbar und bedienbar.
  • Beispiel C – erfüllt (Grenzfall). Der Link im Aussehen einer Schaltfläche und die Karte haben eine feste Höhe, der Überlauf bleibt aber sichtbar. Der Text läuft über den Rand hinaus, ist vollständig lesbar, überdeckt nichts, und der Link lässt sich auch am überstehenden Text anklicken. Kein Verlust, also kein Verstoß – im Bericht ein Hinweis. Kippt sofort, wenn der überlaufende Text auf anderem Inhalt landet oder die Schrift außerhalb des Kastens nicht mehr genug Kontrast hat.

Die Schaltfläche „Textabstand nach 1.4.12 einschalten“ und der Lesezeichen-Link gehören zur Übungsseite, nicht zu den Beispielen. Die Schaltfläche legt genau die vier Werte auf die drei Beispiele, das Lesezeichen auf die ganze Seite.

Die Kopiervorlage über den Beispielen setzt dieselben vier Werte wie Lesezeichen und Schaltfläche: * trifft jedes Element, die zweite Regel den Abstand nach Absätzen.

Automatisch erkennbar? Nein. axe meldet in keinem der drei Beispiele etwas dazu. Das Lesezeichen setzt nur die Werte; ob etwas verloren geht, entscheidest du durch Hinsehen.

Grenzfall: Wird Text durch die Abstände mit Auslassungspunkten gekürzt, ist das Kriterium nur erfüllt, wenn der volle Text weiter erreichbar ist, etwa bei Fokus oder auf einer verlinkten Seite. Text in Bildern, in Videos und im canvas fällt nicht unter 1.4.12 – dort lassen sich keine Abstände setzen.

Verwandte Kriterien: 1.4.4 prüft dieselben Fehlerbilder bei 200 % Schriftgröße, 1.4.10 bei 320 CSS-Pixeln Breite. Wer feste Höhen vermeidet, erfüllt meist alle drei.

1.4.13 Inhalt bei Hover oder Fokus

Stufe AA, Hintergrund beim W3C: Understanding 1.4.13 (englisch)

Erscheint zusätzlicher Inhalt, sobald die Maus über einem Element steht oder es den Tastaturfokus bekommt – ein Tooltip, ein Aufklappmenü –, gelten drei Bedingungen: Er lässt sich schließen, ohne Maus oder Fokus zu bewegen. Die Maus kann auf den Inhalt wandern, ohne dass er verschwindet. Und er bleibt stehen, bis man ihn schließt, den Auslöser verlässt oder er nicht mehr gilt.

So prüfst du: Vier Handgriffe je Stelle, erst mit der Maus und ohne zu klicken, dann mit der Tastatur. Am Mac muss dafür die Tastaturnavigation eingeschaltet sein; in Safari gehst du mit Wahltaste + Tab weiter. Ob ein Tooltip vom Browser selbst kommt, siehst du in den Entwicklerwerkzeugen am Element.

  1. Maus auf den Auslöser, der Inhalt erscheint. Esc drücken, ohne die Maus zu bewegen: Verschwindet er?
  2. Maus langsam vom Auslöser auf den eingeblendeten Inhalt bewegen: Bleibt er sichtbar?
  3. Maus ruhig halten und mindestens 20 Sekunden warten: Bleibt er stehen? (Die 20 Sekunden sind keine Schwelle der Norm, nur eine praktische Wartezeit.)
  4. Mit Tab auf den Auslöser: Erscheint der Inhalt? Schließt Esc ihn, ohne dass der Fokus wandert?

Beispiel A: Stelle 1

Der Fluss im Winter

Roman · Leihfrist bis 14. November

Rückgabe in jeder Zweigstelle und am Automaten vor dem Haupteingang. Der Automat ist rund um die Uhr erreichbar.

Beispiel B: Stelle 2

Nachts am Lindenplatz

Krimi · Leihfrist bis 21. November

Rückgabe in jeder Zweigstelle und am Automaten vor dem Haupteingang. Der Automat ist rund um die Uhr erreichbar.

Beispiel C: Stelle 3

Handbuch für Balkongärten

Sachbuch · Leihfrist bis 28. November

Rückgabe in jeder Zweigstelle und am Automaten vor dem Haupteingang. Der Automat ist rund um die Uhr erreichbar.

Beispiel D

Erinnerung per E-Mail

Drei Tage vor Ablauf der Leihfrist

Eingabe prüfen

An diese Adresse schicken wir die Erinnerung. Du kannst sie jederzeit im Ausleihkonto ändern. Die Erinnerung ist kostenlos und kommt nur, wenn noch Medien auf deinem Konto stehen. Abbestellen kannst du sie am Infotresen oder im Ausleihkonto.

Beispiel E

Buch vormerken

Abholung am Infotresen

Wir legen das Buch sieben Tage für dich zurück.

Beispiel F

Die Brücke über die Linde

Roman · zurzeit ausgeliehen

Vormerkung bestätigen

Wir legen das Buch für dich zurück, sobald es zurückgegeben wird.

Bereitgelegte Bücher holst du innerhalb von sieben Tagen am Infotresen ab.

Zwei Vormerkungen liegen schon vor.

Öffne zuerst den Dialog über „Vormerken …“.

Beispiel G

Fernleihe

Bücher aus anderen Büchereien bestellen

Bestellen kannst du am Infotresen oder im Ausleihkonto. Wir schreiben dir, sobald das Buch da ist.

Auflösung zu 1.4.13
  • Beispiel A, Stelle 1 – erfüllt (Ausnahme). Der Hinweis ist ein natives title-Attribut. Wann er erscheint, wie er aussieht und wann er verschwindet, steuert allein der Browser – solche Anzeigen nimmt das Kriterium aus. Die drei Bedingungen werden hier nicht bewertet. Trotzdem ein Hinweis für den Bericht: Bei Tastaturfokus und auf Touch-Geräten erscheint der Text nicht. Steht wesentliche Information nur im title, ist das ein Thema für 2.1.1, nicht für 1.4.13.
  • Beispiel B, Stelle 2 – nicht erfüllt. Schließen mit Esc klappt, der Tooltip bleibt auch stehen und erscheint bei Tastaturfokus. Aber sobald die Maus den Auslöser verlässt, ist er weg – man kommt nicht auf ihn hinauf. Wer mit Bildschirmlupe arbeitet, muss die Maus auf den Tooltip bewegen, um ihn ganz in den vergrößerten Ausschnitt zu holen; auch bei unruhiger Mausführung verschwindet er ständig. Fehlerbild F95.
  • Beispiel C, Stelle 3 – erfüllt. Esc schließt den Tooltip, ohne dass Maus oder Fokus sich bewegen. Die Maus kann über die Lücke auf den Tooltip wandern. Er bleibt, solange Maus oder Tastaturfokus auf Auslöser oder Tooltip liegen; von selbst verschwindet er nicht.
  • Beispiel D – erfüllt (Sonderregel für Fehlermeldungen). Bei Fokus oder Maus auf dem Feld erscheint eine Meldung zu einem Eingabefehler und verdeckt den Text darunter. Esc schließt sie nicht – das muss es auch nicht: Meldet der Inhalt einen Eingabefehler, entfällt die Bedingung „schließbar“. Hoverbar ist die Meldung, und sie bleibt stehen, bis das Feld verlassen oder die Adresse berichtigt ist; dann gilt sie nicht mehr und verschwindet.
  • Beispiel E – erfüllt. Der Hinweis erscheint bei Fokus oder Maus in einer dafür frei gehaltenen Fläche unter dem Feld. Er verdeckt und ersetzt nichts, also muss er nicht schließbar sein. Hoverbar ist er, und er bleibt stehen. Bei 400 % Zoom gegenprüfen: Verdeckt derselbe Inhalt dann doch etwas, gilt die Bedingung wieder.
  • Beispiel F – erfüllt, mit Hinweis. Öffne mit „Vormerken …“ den Dialog und geh auf „Jetzt vormerken“. Der Tooltip erfüllt alle drei Bedingungen. Esc schließt ihn – und im selben Zug den ganzen Dialog. Für 1.4.13 zählt nur, dass sich der Tooltip ohne Maus- oder Fokuswechsel schließen lässt. Der Tooltip verdeckt hier „Abbrechen“ ganz: Wer ihn mit Esc loswerden will, um die Schaltfläche zu sehen, verliert den Dialog. Das ist ein Hinweis zur Bedienbarkeit; gehen dabei Eingaben verloren, wird es ein Thema für andere Kriterien (Parkplatz).
  • Beispiel G – nicht anwendbar. Der Hinweis erscheint weder bei Hover noch bei Fokus, sondern erst auf Klick, Enter oder Leertaste, und er bleibt bis zum nächsten Klick. Damit fällt er nicht unter 1.4.13. Zu prüfen ist hier anderes: Bedienung mit der Tastatur (2.1.1) und ob die Schaltfläche ihren Zustand meldet (4.1.2, hier über aria-expanded).
  • Beispiel H – nicht erfüllt. Das Menü klappt bei Maus oder Tastaturfokus auf „Mein Konto“ auf und schließt mit Esc. Zwischen Schaltfläche und Menü liegt aber eine Lücke ohne verbindende Fläche: Verlässt die Maus die Schaltfläche, klappt das Menü zu, bevor sie ankommt. Nicht hoverbar, Fehlerbild F95 – hier mit der typischen Ursache bei Aufklappmenüs. Mit einer sehr schnellen Bewegung springt der Zeiger manchmal über die Lücke; darauf darf niemand angewiesen sein. Mit der Tastatur sind alle drei Einträge erreichbar.
Tooltip-Test: Ergebnis je Stelle
Stelle1 – Esc schließt2 – Maus kann auf den Inhalt3 – bleibt stehen4 – erscheint bei Fokus, Esc schließtUrteil 1.4.13
Stelle 1 (A)Sache des BrowsersSache des BrowsersSache des Browserserscheint nichterfüllt – Ausnahme
Stelle 2 (B)janeinjajanicht erfüllt
Stelle 3 (C)jajajajaerfüllt

In B, C und F zählt als Fokus nur der Tastaturfokus: Nach einem Mausklick auf die Schaltfläche hält der Fokus den Tooltip nicht offen, damit die Handgriffe 1 bis 3 in jedem Browser dasselbe ergeben. Der Dialog in F ist nicht modal und steht im Textfluss; die Schaltfläche „Vormerken …“ gehört zum Beispiel.

Touch: Bisher nur in der Touch-Emulation des Browsers geprüft. Dort schließen sich die Tooltips in B und C und das Menü in H gleich nach dem Antippen wieder; die Menüeinträge in H wären dann per Touch nicht erreichbar. Bitte an einem Telefon oder Tablet gegenprüfen. Für 1.4.13 ändert das nichts – es wäre ein Hinweis zur Bedienung per Touch.

Automatisch erkennbar? Nein. axe meldet in keinem der acht Beispiele etwas zu diesem Kriterium. Die drei Bedingungen zeigen sich nur beim Ausprobieren mit Maus und Tastatur.

Grenzfall: Ein Kreuz zum Anklicken genügt als Weg zum Schließen allein nicht – dafür muss man die Maus bewegen. Verlangt ist ein Weg ohne Maus- oder Fokuswechsel, in der Regel Esc.

Verwandte Kriterien: 2.1.1: Tooltips, die nur bei Hover und nie bei Fokus erscheinen, sind ein Tastaturproblem. 4.1.2: In B, C und F ist der Tooltip über aria-describedby mit der Schaltfläche verbunden, in A liefert title die Beschreibung. 3.3.1: In D ist der Fehler zusätzlich dauerhaft am Feld markiert („Eingabe prüfen“).

Prinzip 2: Bedienbar

2.1.1 Tastatur

Stufe A, Hintergrund beim W3C: Understanding 2.1.1 (englisch)

Alles, was eine Seite kann, muss sich über die Tastatur bedienen lassen – und zwar ohne dass es auf das Tempo einzelner Tastendrücke ankommt. Die Maus bleibt erlaubt, sie darf nur nicht der einzige Weg sein. Ausgenommen sind Eingaben, bei denen der gezogene Weg selbst zählt, etwa eine Unterschrift von Hand.

So prüfst du: Lege die Maus weg und schalte den Screenreader aus – er fängt Tasten ab und löst Klicks selbst aus. Gehe mit Tab und Umschalt + Tab durch das Beispiel und bediene alles mit Enter, Leertaste, den Pfeiltasten und Esc. Probiere danach dasselbe mit der Maus: Was geht nur damit? Windows: nichts einzustellen. Mac: in den Systemeinstellungen unter „Tastatur“ die Tastaturnavigation einschalten; in Safari erreichst du Links mit Wahltaste + Tab.

Beispiel A: Merkliste

Neu im Bestand
  • Der Garten im Winter
  • Brücken bauen. Ein Sachbuch
  • Das stille Haus am See

Auf deiner Merkliste: 0 Titel

Beispiel B: Merkliste

Neu im Bestand
  • Der Garten im Winter
    Merken für „Der Garten im Winter“
  • Brücken bauen. Ein Sachbuch
    Merken für „Brücken bauen. Ein Sachbuch“
  • Das stille Haus am See
    Merken für „Das stille Haus am See“

Auf deiner Merkliste: 0 Titel

Beispiel E: Leseliste sortieren

Meine Leseliste

Bringe die Titel in deine Reihenfolge: Ziehe einen Titel am Griff an die gewünschte Stelle.

  1. Der Garten im Winter
  2. Brücken bauen. Ein Sachbuch
  3. Das stille Haus am See
  4. Lindenau in alten Karten

Reihenfolge unverändert.

Beispiel F: Leseliste sortieren

Meine Leseliste

Bringe die Titel in deine Reihenfolge: Ziehe einen Titel am Griff an die gewünschte Stelle oder benutze die Pfeil-Schaltflächen.

  1. Der Garten im Winter
  2. Brücken bauen. Ein Sachbuch
  3. Das stille Haus am See
  4. Lindenau in alten Karten

Reihenfolge unverändert.

Beispiel G: Benutzungsordnung

Benutzungsordnung (Auszug)

§ 1 Anmeldung. Wer Medien ausleihen möchte, braucht einen Büchereiausweis. Den Ausweis gibt es gegen Vorlage eines Lichtbildausweises an der Auskunft.

§ 2 Leihfristen. Bücher werden für vier Wochen ausgeliehen, Zeitschriften und Filme für zwei Wochen. Die Frist lässt sich zweimal verlängern, solange keine Vormerkung vorliegt.

§ 3 Vormerkungen. Ausgeliehene Medien können vorgemerkt werden. Sobald sie bereitliegen, kommt eine Nachricht. Sie liegen dann sieben Öffnungstage an der Ausgabe.

§ 4 Rückgabe. Medien können während der Öffnungszeiten an der Theke und jederzeit über die Rückgabeklappe am Eingang Lindenstraße zurückgegeben werden.

§ 5 Räume. Lernräume lassen sich für bis zu drei Stunden am Tag reservieren. Wer zehn Minuten nach Beginn nicht da ist, verliert die Reservierung.

§ 6 Schlussbestimmung. Mit der Anmeldung wird diese Benutzungsordnung anerkannt. Sie hängt außerdem im Eingangsbereich aus.

Beispiel H: Benutzungsordnung

Benutzungsordnung (Auszug)

§ 1 Anmeldung. Wer Medien ausleihen möchte, braucht einen Büchereiausweis. Den Ausweis gibt es gegen Vorlage eines Lichtbildausweises an der Auskunft.

§ 2 Leihfristen. Bücher werden für vier Wochen ausgeliehen, Zeitschriften und Filme für zwei Wochen. Die Frist lässt sich zweimal verlängern, solange keine Vormerkung vorliegt.

§ 3 Vormerkungen. Ausgeliehene Medien können vorgemerkt werden. Sobald sie bereitliegen, kommt eine Nachricht. Sie liegen dann sieben Öffnungstage an der Ausgabe.

§ 4 Rückgabe. Medien können während der Öffnungszeiten an der Theke und jederzeit über die Rückgabeklappe am Eingang Lindenstraße zurückgegeben werden.

§ 5 Räume. Lernräume lassen sich für bis zu drei Stunden am Tag reservieren. Wer zehn Minuten nach Beginn nicht da ist, verliert die Reservierung.

§ 6 Schlussbestimmung. Mit der Anmeldung wird diese Benutzungsordnung anerkannt. Sie hängt außerdem im Eingangsbereich aus.

Beispiel I: Benutzungsordnung

Benutzungsordnung (Auszug)

§ 1 Anmeldung. Wer Medien ausleihen möchte, braucht einen Büchereiausweis. Den Ausweis gibt es gegen Vorlage eines Lichtbildausweises an der Auskunft.

§ 2 Leihfristen. Bücher werden für vier Wochen ausgeliehen, Zeitschriften und Filme für zwei Wochen. Die Frist lässt sich zweimal verlängern, solange keine Vormerkung vorliegt.

§ 3 Vormerkungen. Ausgeliehene Medien können vorgemerkt werden. Sobald sie bereitliegen, kommt eine Nachricht. Sie liegen dann sieben Öffnungstage an der Ausgabe.

§ 4 Rückgabe. Medien können während der Öffnungszeiten an der Theke und jederzeit über die Rückgabeklappe am Eingang Lindenstraße zurückgegeben werden.

§ 5 Räume. Lernräume lassen sich für bis zu drei Stunden am Tag reservieren. Wer zehn Minuten nach Beginn nicht da ist, verliert die Reservierung.

§ 6 Schlussbestimmung. Mit der Anmeldung wird diese Benutzungsordnung anerkannt. Sie hängt außerdem im Eingangsbereich aus.

Beispiel J: Standortkarte

So findest du uns
Lindenstraße Lindenstraße Lindenstraße Bahnhofstraße Bahnhofstraße Mühlweg Schulgasse Linde (Fluss) Stadtpark Seebühne Alter Friedhof Freibad Volkshochschule Hauptstelle Lindenstraße 1 Zweigstelle Nord Mühlweg 12 Bahnhof Rathaus

Die Karte zeigt die Hauptstelle.

  • Hauptstelle: Lindenstraße 1
  • Zweigstelle Nord: Mühlweg 12

Zum Ausprobieren: Zeige die Zweigstelle Nord. Finde dann heraus, was im Stadtpark nördlich vom Bahnhof liegt. Die Suche kennt Hauptstelle, Zweigstelle Nord, Bahnhof, Rathaus und die beiden Adressen.

Beispiel K: Unterschriftenfeld

Antrag auf einen Büchereiausweis

Unterschreibe im Feld mit der Maus, einem Stift oder dem Finger.

Das Feld ist leer.

Auflösung zu 2.1.1
  • Beispiel A – erfüllt. Die drei „Merken“-Schalter sind echte button-Elemente. Sie stehen in der Tab-Reihenfolge und reagieren auf Enter und Leertaste, ohne dass dafür eine Zeile Skript nötig wäre – der Browser macht aus dem Tastendruck einen Klick.
  • Beispiel B – nicht erfüllt. Die Schalter sind div-Elemente mit role="button", tabindex="0" und einem Klick-Skript. Der Fokus kommt hin, Rolle, Name und Zustand stimmen (4.1.2 ist erfüllt) – aber Enter und Leertaste bewirken nichts, weil ein div aus einem Tastendruck keinen Klick macht und niemand die Tasten nachgebaut hat. Betroffen sind alle, die ohne Maus arbeiten: mit Tastatur, Schaltersteuerung oder Bildschirmtastatur. Mit laufendem Screenreader fällt es oft nicht auf, weil er selbst einen Klick auslöst – deshalb ohne Screenreader prüfen. Noch häufiger ist die Fassung ganz ohne tabindex und Rolle: Dann wird das Element beim Tabben übersprungen, und zusätzlich ist 4.1.2 verletzt.
  • Beispiel C – nicht erfüllt. Das Untermenü erscheint nur, solange der Mauszeiger über „Mein Konto“ steht (CSS :hover). „Mein Konto“ ist ein span ohne Tabstopp, die drei Links darunter sind bis dahin mit display: none versteckt. Per Tastatur – und auch mit dem Screenreader – sind „Ausgeliehene Medien“, „Vormerkungen“ und „Gebühren“ nicht erreichbar.
  • Beispiel D – erfüllt. „Mein Konto“ ist eine Schaltfläche mit aria-expanded. Enter oder Leertaste klappt das Untermenü auf, Tab führt durch die Links, Esc klappt zu und setzt den Fokus zurück auf die Schaltfläche. Ob das Untermenü per Enter, Pfeiltasten oder Tab erreichbar ist, lässt das Kriterium offen – es muss nur gehen.
  • Beispiel E – nicht erfüllt. Die Reihenfolge lässt sich nur durch Ziehen am Griff ändern. Der Griff ist ein span mit Zeiger-Ereignissen, es gibt keinen Tabstopp und keine Tasten. Start und Ziel zählen, nicht der Weg dazwischen – die Ausnahme für pfadabhängige Eingaben greift also nicht. Verletzt außerdem 2.5.7, weil es auch für Maus und Finger keinen Weg ohne Ziehen gibt. Beide Kriterien getrennt bewerten.
  • Beispiel F – erfüllt. Ziehen geht weiterhin, zusätzlich hat jeder Titel die Schaltflächen „nach oben“ und „nach unten“. Sie sind per Tab erreichbar, der Fokus bleibt nach dem Verschieben auf der Schaltfläche, und die neue Position wird als Statusmeldung ausgegeben. Dieselben Schaltflächen erfüllen auch 2.5.7.
  • Beispiel G – erfüllt. Der scrollbare Kasten hat tabindex="0", dazu role="region" und einen Namen. Er bekommt den Fokus und lässt sich mit Pfeiltasten, Bild auf, Bild ab und Leertaste scrollen.
  • Beispiel H – Grenzfall (browserabhängig); Kursposition: als nicht erfüllt melden. Derselbe Kasten ohne tabindex, und er enthält nichts Fokussierbares. In Chrome, Edge und Firefox erreicht Tab ihn trotzdem: Diese Browser nehmen einen scrollbaren Bereich ohne fokussierbaren Inhalt von selbst in die Tab-Reihenfolge auf – dort siehst du keinen Unterschied zu Beispiel G. Verlassen kann sich eine Seite darauf nicht. Wo ein Browser das nicht tut (probiere Safari am Mac aus), bleiben § 3 bis § 6 für Tastaturnutzende unlesbar, obwohl das Kontrollkästchen darunter das Lesen verlangt. Schreibe in den Befund, in welchem Browser du was beobachtet hast; die Abhilfe kostet ein Attribut.
  • Beispiel I – nicht erfüllt. Dieser Kasten rollt nicht von selbst: Er hat overflow: hidden, ein Skript verschiebt den Text beim Drehen am Mausrad, und der Rollbalken am Rand ist nachgebaut und reagiert nur auf Zeiger. Es gibt keinen Tabstopp und keine Tasten – in keinem Browser. Wer ohne Maus arbeitet und den Bildschirm sieht, kommt über den Anfang des Textes nicht hinaus. Mit dem Screenreader fällt es nicht auf, weil der Lesecursor den ganzen Text erreicht.
  • Beispiel J – Streitfall, hier nicht erfüllt. Suchfeld und Zoom-Schaltflächen gehen per Tastatur, das Verschieben des Ausschnitts nur durch Ziehen mit der Maus. 2.1.1 verlangt, dass jede Funktion per Tastatur bedienbar ist, nicht jeder einzelne Bedienweg. „Zweigstelle Nord zeigen“ gelingt über die Suche – wäre das die einzige Aufgabe der Karte, wäre das Kriterium erfüllt (Antwort A). „Was liegt im Stadtpark nördlich vom Bahnhof?“ gelingt per Tastatur nicht: Nach der Suche steht der Bahnhof unten rechts im Ausschnitt; Bahnhofstraße, Fluss und Lindenstraße sind zu sehen, der Stadtpark mit der Seebühne nicht – auf keiner Zoomstufe und nach keiner Suche, denn „Stadtpark“ kennt die Suche nicht. Die Umgebung ansehen ist eine Funktion der Karte, also kippt das Urteil zu „nicht erfüllt“ (Antwort B). Antwort C ist falsch: Die Ausnahme für pfadabhängige Eingaben trifft nicht zu, beim Verschieben zählen Start- und Endpunkt. Auch die Kartenausnahme aus 1.4.10 hat mit 2.1.1 nichts zu tun. Abhilfe: Karte fokussierbar machen und auf Pfeiltasten reagieren lassen oder Schaltflächen zum Verschieben ergänzen. Dieselbe Frage stellt sich für Zeigernutzende bei 2.5.7.
  • Beispiel K – erfüllt (Ausnahme). Eine Unterschrift von Hand hängt vom gezogenen Weg ab, nicht nur von Start und Ziel. Das Zeichnen selbst muss deshalb nicht per Tastatur gehen. Alles drumherum schon: „Unterschrift löschen“ ist eine echte Schaltfläche. Die Ausnahme macht das Feld nicht benutzbar für Menschen, die keinen Zeiger führen können – eine zweite Möglichkeit, etwa den Namen zu tippen, gehört in die Empfehlung.

Automatisch erkennbar? Kaum. axe meldet hier nur Beispiel H (Regel scrollable-region-focusable: scrollbarer Bereich ohne Tastaturzugang) – also gerade die Stelle, die in vielen Browsern trotzdem funktioniert. Die Beispiele B, C, E, I und J bleiben ohne Meldung, auch der nachgebaute Rollkasten in I: Für das Werkzeug ist er kein scrollbarer Bereich. Ob ein Skript auf Tasten reagiert, findet nur der Durchgang mit der Tastatur heraus.

Grenzfall: Ein Schließen-Symbol, das nur auf die Maus reagiert, während Esc dasselbe erledigt (siehe 2.1.2, Beispiel D): Wer auf die Funktion schaut, sieht 2.1.1 erfüllt; wer auf das Element schaut, nicht. Im Befund begründen, wofür du dich entscheidest.

Verwandte Kriterien: 2.1.2 (Fokus kommt hinein, aber nicht heraus), 4.1.2 (nachgebautes Bedienelement ohne Rolle und Namen), 2.4.7 (Fokus kommt an, ist aber nicht zu sehen), 2.5.7 (Ziehen braucht eine Alternative auch für Zeiger), 1.4.13 (Inhalte, die bei Hover oder Fokus erscheinen).

2.1.2 Keine Tastaturfalle

Stufe A, Hintergrund beim W3C: Understanding 2.1.2 (englisch)

Kommt der Tastaturfokus in ein Bauteil hinein, muss er mit der Tastatur auch wieder herauskommen. Reichen dafür Tab, die Pfeiltasten oder ein anderer üblicher Weg wie Esc nicht aus, muss die Seite den Ausweg nennen.

So prüfst du: Ohne Maus und ohne laufenden Screenreader. Gehe mit Tab in jedes Bauteil hinein und versuche, mit Tab, Umschalt + Tab, den Pfeiltasten und Esc vorwärts und rückwärts wieder herauszukommen. Gelingt das nicht: Steht irgendwo, wie es geht? Verdächtig sind Editoren, Player, eingebettete Fremdinhalte und Dialoge. Die Beispiele A und B reagieren erst, nachdem du sie über die Steuerung gestartet hast.

Beispiel A: Notizfeld

Steuerung der Übungsseite – gehört nicht zum Beispiel. Der Start setzt den Fokus ins Notizfeld und den Text zurück. Das Beispiel läuft 20 Sekunden und ruht dann von selbst wieder – falls du mit der Tastatur nicht bis zu „Beispiel A stoppen“ kommst, warte so lange. Beispiel A ruht.

Mit Tab rückst du die Zeile ein, mit Umschalt + Tab wieder aus.

Beispiel B: Notizfeld

Steuerung der Übungsseite – gehört nicht zum Beispiel. Der Start setzt den Fokus ins Notizfeld und den Text zurück. Das Beispiel läuft 20 Sekunden und ruht dann von selbst wieder – falls du mit der Tastatur nicht bis zu „Beispiel B stoppen“ kommst, warte so lange. Beispiel B ruht.

Mit Tab rückst du die Zeile ein, mit Umschalt + Tab wieder aus. Feld verlassen: erst Esc drücken, dann Tab.

Beispiel C: Newsletter-Dialog

Post von der Stadtbücherei

Neue Bücher, Lesungen und Termine – einmal im Monat per E-Mail.

Alle Veranstaltungen im Überblick

Beispiel D: Newsletter-Dialog

Post von der Stadtbücherei

Neue Bücher, Lesungen und Termine – einmal im Monat per E-Mail.

Alle Veranstaltungen im Überblick

Auflösung zu 2.1.2
  • Beispiel A – nicht erfüllt. Solange das Beispiel läuft, fängt das Notizfeld Tab und Umschalt + Tab ab, um die Zeile einzurücken. Einen anderen Tastaturweg hinaus gibt es nicht – auch Esc hilft nicht –, und nirgends steht ein Hinweis. Wer per Tastatur, Schalter oder Sprachsteuerung arbeitet, sitzt fest: „Notiz speichern“ und alles danach bleibt unerreichbar, rückwärts genauso. Für diese Menschen ist an dieser Stelle die Nutzung der Seite zu Ende.
  • Beispiel B – erfüllt. Dasselbe Feld, dieselbe Einrückung mit Tab. Aber Esc gibt die Tabtaste frei, das nächste Tab oder Umschalt + Tab verlässt das Feld. Weil das kein Weg ist, den man erraten muss, steht er sichtbar am Feld, ist per aria-describedby mit ihm verknüpft und wird nach Esc zusätzlich als Statusmeldung ausgegeben. Genau das verlangt der zweite Halbsatz des Kriteriums.
  • Beispiel C – erfüllt. Der modale Dialog hält den Fokus: Tab kreist zwischen E-Mail-Feld, „Abonnieren“ und „Schließen“. Das ist gewollt und keine Falle, denn es gibt Auswege per Tastatur: Esc, die Schaltfläche „Schließen“ und das Absenden. Danach steht der Fokus wieder auf „Newsletter abonnieren“.
  • Beispiel D – 2.1.2 erfüllt, aber ein anderes Kriterium nicht (Streitfall aus dem Kurs). Tab kreist im Dialog, das Schließen-Symbol reagiert nur auf die Maus, Esc schließt und setzt den Fokus zurück auf den Auslöser. Esc ist bei Dialogen ein üblicher Ausweg – deshalb ist 2.1.2 erfüllt (Antwort A). Genauer ist Antwort C: Das Symbol ist ein span mit Klick-Skript, ohne Rolle, ohne Namen, ohne Tabstopp. Damit ist 4.1.2 nicht erfüllt. Ob auch 2.1.1 verletzt ist, hängt davon ab, ob man auf die Funktion schaut (Schließen geht mit Esc) oder auf das Element – hier urteilen Prüfende verschieden, also im Befund begründen. Antwort B träfe nur zu, wenn Esc nicht funktionierte und kein anderer Weg aus dem Dialog führte. Empfehlung in jedem Fall: eine sichtbare, fokussierbare Schaltfläche „Schließen“, denn nicht alle kennen Esc.

Zur Steuerung: „Beispiel … starten“ und „Beispiel … stoppen“ gehören zur Übungsseite, nicht zum Beispiel. Beispiel A löst sich nach 20 Sekunden selbst – eine echte Seite täte das nicht. Bewerte es so, als liefe es dauerhaft.

Automatisch erkennbar? Nein. axe meldet in keinem der vier Beispiele etwas. Eine Tastaturfalle findest du nur, indem du hineingehst und wieder herauszukommen versuchst.

Nicht-Beeinträchtigung: 2.1.2 gehört zu den vier Kriterien (mit 1.4.2, 2.2.2 und 2.3.1), die für alle Inhalte einer Seite gelten – auch für solche, für die es eine barrierefreie Alternative gibt. Eine Falle irgendwo auf der Seite verhindert die Konformität der ganzen Seite.

Grenzfall: Ein Cookie-Banner, das modal aussieht, den Fokus aber nicht zu sich holt: Tab läuft hinter dem abgedunkelten Hintergrund weiter. Das ist das Gegenteil einer Falle und kein Fall für 2.1.2, sondern für 2.4.3 – und für 2.4.11, wenn fokussierte Elemente ganz verdeckt sind.

Verwandte Kriterien: 2.1.1 (etwas ist per Tastatur gar nicht bedienbar), 2.4.3 (Fokus beim Öffnen in den Dialog, beim Schließen zurück zum Auslöser), 4.1.2 (Rolle und Name des Dialogs und seiner Bedienelemente).

2.1.4 Tastenkürzel aus einzelnen Zeichen

Stufe A, Hintergrund beim W3C: Understanding 2.1.4 (englisch)

Hat eine Seite Tastenkürzel, die nur aus einem Buchstaben, einer Ziffer, einem Satz- oder Sonderzeichen bestehen, muss mindestens eines gelten: Das Kürzel lässt sich abschalten, es lässt sich auf eine Kombination mit Strg, Alt oder einer anderen nicht druckbaren Taste umlegen, oder es wirkt nur, solange das zugehörige Bedienelement den Fokus hat.

So prüfst du: Suche zuerst nach einer Hilfe zu Tastenkürzeln (oft mit ?). Klicke dann auf eine freie Stelle, sodass kein Eingabefeld den Fokus hat, und drücke nacheinander Buchstaben, Ziffern und Satzzeichen. Passiert etwas, suche nach einer Einstellung zum Abschalten oder Umbelegen – oder prüfe, ob das Kürzel nur wirkt, während der Fokus im Bauteil steht. Bewerte nur Kürzel der Seite, nicht die von Browser, Betriebssystem oder Screenreader. Hat die Seite keine solchen Kürzel, ist das Kriterium nicht anwendbar. Zusatz: eingebaute Spracheingabe einschalten (Windows 11: Sprachzugriff, Mac: Sprachsteuerung) und ein Wort diktieren, während kein Feld den Fokus hat.

Beispiel A: Postfach

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Tastenkürzel des Beispiels gibt es erst nach dem Start; es läuft immer nur ein Beispiel. Beispiel A ruht.

Nachrichten der Bücherei

Tastenkürzel: j nächste, k vorige, s Stern, l löschen, ? Hilfe

Tastenkürzel einstellen
  • Vormerkung abholbereit „Der Garten im Winter“ liegt bis Freitag an der Ausgabe.
  • Leihfrist endet bald „Brücken bauen“ ist in drei Tagen fällig.
  • Lesung im November Für die Lesung im Lesesaal sind noch Plätze frei.
  • Neue Öffnungszeiten Ab November ist samstags bis 14 Uhr geöffnet.

Beispiel B: Postfach

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Tastenkürzel des Beispiels gibt es erst nach dem Start; es läuft immer nur ein Beispiel. Beispiel B ruht.

Nachrichten der Bücherei

Tastenkürzel: j nächste, k vorige, s Stern, l löschen, ? Hilfe

  • Vormerkung abholbereit „Der Garten im Winter“ liegt bis Freitag an der Ausgabe.
  • Leihfrist endet bald „Brücken bauen“ ist in drei Tagen fällig.
  • Lesung im November Für die Lesung im Lesesaal sind noch Plätze frei.
  • Neue Öffnungszeiten Ab November ist samstags bis 14 Uhr geöffnet.

Beispiel C: Postfach

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Tastenkürzel des Beispiels gibt es erst nach dem Start; es läuft immer nur ein Beispiel. Beispiel C ruht.

Nachrichten der Bücherei

Tastenkürzel: j nächste, k vorige, s Stern, l löschen, ? Hilfe

  • Vormerkung abholbereit „Der Garten im Winter“ liegt bis Freitag an der Ausgabe.
  • Leihfrist endet bald „Brücken bauen“ ist in drei Tagen fällig.
  • Lesung im November Für die Lesung im Lesesaal sind noch Plätze frei.
  • Neue Öffnungszeiten Ab November ist samstags bis 14 Uhr geöffnet.

Auflösung zu 2.1.4
  • Beispiel A – erfüllt. Die Kürzel wirken auf der ganzen Seite, aber es gibt die Einstellung „Tastenkürzel einstellen“: Sie lassen sich ausschalten oder auf Alt + Umschalt + Buchstabe umlegen. Schon eine der beiden Möglichkeiten würde genügen. Dass die Kürzel zunächst eingeschaltet sind, ist erlaubt.
  • Beispiel B – nicht erfüllt. j, k, s, l und ? wirken, sobald irgendwo auf der Seite eine dieser Tasten gedrückt wird und kein Textfeld den Fokus hat. Abschalten oder umlegen lässt sich nichts. Wer mit Spracheingabe arbeitet, löst damit unbemerkt Aktionen aus: Die Software tippt ein erkanntes Wort Zeichen für Zeichen. Wird „los“ erkannt, während kein Feld den Fokus hat, löscht das l die aktuelle Nachricht, und das s setzt bei der nächsten einen Stern. Dasselbe passiert Menschen, die öfter versehentlich Tasten treffen.
  • Beispiel C – erfüllt. Dieselben Kürzel, aber sie wirken nur, solange der Fokus in der Nachrichtenliste steht – auf einer ihrer Schaltflächen. Steht der Fokus woanders, passiert bei s oder l nichts. Das ist die dritte Möglichkeit des Kriteriums: nur bei Fokus auf dem Bauteil. Die Liste zählt hier als ein Bedienelement; solange der Fokus in ihr steht – etwa nach einem Klick auf „Stern“ –, löst ein diktiertes Wort weiterhin Kürzel aus. Deshalb zusätzlich das Abschalten anbieten.

Zur Steuerung: „Beispiel … starten“ und „Beispiel … stoppen“ gehören zur Übungsseite und zählen nicht als Mechanismus zum Abschalten. Bewerte die Beispiele so, als wären ihre Kürzel ab dem Laden der Seite aktiv.

Automatisch erkennbar? Nein. axe, WAVE und Lighthouse sehen nicht, auf welche Tasten ein Skript reagiert; axe meldet in keinem der drei Beispiele etwas.

Grenzfall: Ein Kürzel aus Umschalt + Buchstabe. Der Normtext nennt Groß- und Kleinbuchstaben ausdrücklich – die Umschalttaste macht aus dem Kürzel keine Kombination im Sinne des Kriteriums. In allen drei Beispielen löst deshalb auch ein großes S den Stern aus. Kürzel über das Attribut accesskey laufen dagegen über Modifikatortasten und fallen nicht unter das Kriterium.

Verwandte Kriterien: 2.1.1 (alles muss auch ohne Kürzel per Tastatur gehen – hier über die Schaltflächen „Stern“ und „Löschen“), 2.5.3 (Spracheingabe braucht den sichtbaren Namen im zugänglichen Namen), 3.2.1 und 3.2.2 (unerwartete Änderungen).

2.2.1 Zeiteinteilung anpassbar

Stufe A, Hintergrund beim W3C: Understanding 2.2.1 (englisch)

Setzt eine Seite ein Zeitlimit, müssen Nutzende es vorher abschalten, auf mindestens das Zehnfache verstellen oder verlängern können. Verlängern heißt: Die Warnung kommt mindestens 20 Sekunden vor Ablauf, eine einfache Aktion genügt, und das geht mindestens zehnmal. Ausgenommen sind Echtzeit-Ereignisse wie Auktionen, Fälle, in denen das Limit wesentlich ist, und Limits über 20 Stunden.

So prüfst du: Suche Zeitlimits: Sitzungsablauf, Reservierungen, automatische Weiterleitung, automatisches Neuladen. Dann nichts mehr bedienen und eine Stoppuhr mitlaufen lassen. Kommt eine Warnung? Wie viele Sekunden bleiben ab der Warnung? Womit verlängerst du, und wie oft geht das? Oder lässt sich das Limit vorher abschalten oder verstellen? Was passiert mit deinen Eingaben, wenn die Zeit abläuft? Zusatz mit Screenreader: Wird die Warnung angesagt? NVDA starten oder die eingebauten nehmen – Windows-Sprachausgabe mit Strg + Windows + Enter, VoiceOver mit Cmd + F5.

Beispiel A: Terminreservierung

Steuerung der Übungsseite – gehört nicht zum Beispiel. Nach dem Start lässt sich ein Termin wählen; mit der Wahl beginnt im Beispiel die Zeit zu laufen. Beispiel A ruht.

Lernraum reservieren

Wähle einen Termin. Wir halten ihn 45 Sekunden für dich frei, bis du verbindlich reservierst.

Termin

Beispiel B: Terminreservierung

Steuerung der Übungsseite – gehört nicht zum Beispiel. Nach dem Start lässt sich ein Termin wählen; mit der Wahl beginnt im Beispiel die Zeit zu laufen. Beispiel B ruht.

Lernraum reservieren

Wähle einen Termin. Wir halten ihn 45 Sekunden für dich frei, bis du verbindlich reservierst.

Termin

Beispiel C: Terminreservierung

Steuerung der Übungsseite – gehört nicht zum Beispiel. Nach dem Start lässt sich ein Termin wählen; mit der Wahl beginnt im Beispiel die Zeit zu laufen. Beispiel C ruht.

Lernraum reservieren

Wähle einen Termin. Wir halten ihn 40 Sekunden für dich frei, bis du verbindlich reservierst.

Termin

Auflösung zu 2.2.1
  • Beispiel A – nicht erfüllt. Vieles stimmt: Die Warnung kommt 20 Sekunden vor Ablauf, sie steht in einer Region mit role="alert", die Screenreader ohne Fokuswechsel ansagen, und „Reservierung verlängern“ ist eine einfache Aktion. Aber nach der dritten Verlängerung ist Schluss – die Schaltfläche ist dann gesperrt, die nächste Warnung sagt „Eine weitere Verlängerung ist nicht möglich“, und der Termin verfällt. Verlangt sind mindestens zehn Verlängerungen. Wer zum Lesen, Verstehen oder Eingeben deutlich länger braucht oder unterbrochen wird, verliert den Termin trotz Warnung.
  • Beispiel B – erfüllt. Dieselbe Warnung zur selben Zeit, dieselbe Schaltfläche – aber sie lässt sich beliebig oft benutzen (im Skript steht keine Obergrenze). Du musst nicht zehn Warnungen abwarten: Die Schaltfläche funktioniert auch vor der Warnung, jede Betätigung zählt mit.
  • Beispiel C – nicht erfüllt. Nach 40 Sekunden ist die Reservierung weg, die Auswahl gelöscht. Vorher gibt es keine Warnung und keine Möglichkeit zu verlängern, abzuschalten oder zu verstellen. Die Meldung danach kommt zu spät.

Zur Steuerung: „Beispiel … starten“ und „Beispiel … stoppen“ gehören zur Übungsseite. Das Zeitlimit setzt das Beispiel selbst, sobald ein Termin gewählt ist.

Automatisch erkennbar? Kaum. Werkzeuge finden höchstens eine Weiterleitung oder ein Neuladen per meta-Element (bei axe die Regel meta-refresh). Zeitlimits aus Skripten sehen sie nicht; axe meldet in keinem der drei Beispiele etwas.

Grenzfall: Ein Ticketshop hält Sitzplätze zehn Minuten und gibt sie dann ohne Warnung frei. Echtzeit ist das nicht – eine Auktion wäre es. „Wesentlich“ trägt nur, wenn eine Verlängerung die Sache selbst ungültig machen würde, etwa bei einer Prüfung mit Zeitlimit. Bei knappen Plätzen lässt sich darüber streiten, aber eine Warnung mit Verlängerung ist meist möglich. Kursposition: eher nicht erfüllt, mit Begründung im Befund.

Verwandte Kriterien: 4.1.3 (die Warnung muss auch ohne Fokuswechsel bei Hilfsmitteln ankommen), 2.2.2 (Inhalte, die sich von selbst bewegen oder aktualisieren). Dass Eingaben nach einer erneuten Anmeldung erhalten bleiben und vor Datenverlust gewarnt wird, verlangen erst Kriterien der Stufe AAA – als Empfehlung gehört es trotzdem in den Bericht.

2.2.2 Pausieren, beenden, ausblenden

Stufe A, Hintergrund beim W3C: Understanding 2.2.2 (englisch)

Was sich von selbst bewegt, blinkt oder scrollt, länger als fünf Sekunden läuft und neben anderem Inhalt steht, muss sich anhalten, beenden oder ausblenden lassen. Für Inhalte, die sich von selbst aktualisieren, gilt dasselbe ohne die Fünf-Sekunden-Grenze – hier genügt auch, den Takt steuern zu können. Ausgenommen ist nur, was für die Sache wesentlich ist.

So prüfst du: Seite laden, nichts anfassen, fünf Sekunden zusehen. Bewegt, blinkt oder scrollt dann noch etwas, oder tauscht sich Inhalt von selbst aus? Suche den Mechanismus dazu: eine Schaltfläche zum Anhalten oder eine Einstellung. Erreichst du ihn mit Tab, und bleibt der Inhalt danach stehen? Ein Halt, der nur dauert, solange die Maus darüber steht, zählt nicht. Mit Screenreader: Wird ständig etwas Neues angesagt?

Beispiel A: Laufband

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel A ruht.

Aktuelles aus der Bücherei
  • Bücherflohmarkt am Samstag ab 10 Uhr im Foyer
  • Neue Hörbücher in der Onleihe
  • Zweigstelle Nord am Montag geschlossen
  • Vorlesestunde für Kinder: mittwochs um 16 Uhr

Heute geöffnet von 10 bis 18 Uhr. Die Rückgabeklappe am Eingang Lindenstraße ist rund um die Uhr offen.

Beispiel B: Laufband

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel B ruht.

Aktuelles aus der Bücherei
  • Bücherflohmarkt am Samstag ab 10 Uhr im Foyer
  • Neue Hörbücher in der Onleihe
  • Zweigstelle Nord am Montag geschlossen
  • Vorlesestunde für Kinder: mittwochs um 16 Uhr

Heute geöffnet von 10 bis 18 Uhr. Die Rückgabeklappe am Eingang Lindenstraße ist rund um die Uhr offen.

Beispiel C: Karussell

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel C ruht.

Veranstaltungstipps
Lesung: „Das stille Haus am See“

Donnerstag, 19 Uhr, im Lesesaal. Der Eintritt ist frei, um Anmeldung wird gebeten.

1 von 3

Alle Veranstaltungen finden in der Hauptstelle statt.

Beispiel D: Freie Plätze

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel D ruht.

Freie Arbeitsplätze in der Hauptstelle
Bereichfrei
Lesesaal12
Gruppenraum3
Lernkabinen5

Noch nicht aktualisiert.

Lernräume lassen sich bis zu drei Stunden am Tag reservieren.

Beispiel E: Freie Plätze

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel E ruht.

Freie Arbeitsplätze in der Hauptstelle
Bereichfrei
Lesesaal12
Gruppenraum3
Lernkabinen5

Noch nicht aktualisiert.

Lernräume lassen sich bis zu drei Stunden am Tag reservieren.

Beispiel F: Katalogsuche

Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel F ruht.

Katalogsuche nach „Garten“

Die Suche ist noch nicht gestartet.

Auflösung zu 2.2.2
  • Beispiel A – erfüllt. Unter dem Laufband steht die Schaltfläche „Laufband anhalten“. Sie ist per Tab erreichbar; angehalten stehen alle vier Meldungen still und vollständig lesbar da, „Laufband fortsetzen“ lässt es weiterlaufen.
  • Beispiel B – nicht erfüllt. Das Laufband hält nur an, solange der Mauszeiger darüber steht (CSS :hover). Wer mit Tastatur oder am Touchscreen arbeitet, hat gar keinen Mechanismus, und auch mit der Maus läuft es weiter, sobald man woanders hinzeigt. Betroffen sind Menschen, die sich bei Bewegung am Rand schwer auf den Text konzentrieren können, und alle, die langsamer lesen, als das Band läuft.
  • Beispiel C – nicht erfüllt. Der Tipp wechselt alle vier Sekunden. „Voriger Tipp“ und „Nächster Tipp“ blättern, halten den Wechsel aber nicht an – nach vier Sekunden springt das Karussell weiter, auch während man liest oder der Fokus auf einer der Schaltflächen steht. Es fehlt eine Schaltfläche zum Anhalten.
  • Beispiel D – nicht erfüllt. Die Zahlen und die Zeile „Zuletzt aktualisiert“ ändern sich alle drei Sekunden, und es gibt nichts, womit sich das anhalten oder verlangsamen ließe. Für automatische Aktualisierung gilt keine Fünf-Sekunden-Grenze. Mit Screenreader wird alle drei Sekunden die Statuszeile angesagt – mitten in alles andere hinein.
  • Beispiel E – erfüllt. Dieselbe Tafel mit dem Auswahlfeld „Aktualisierung“: alle 3 Sekunden, alle 30 Sekunden oder angehalten. Den Takt steuern zu können, reicht dem Kriterium bereits; Anhalten geht hier zusätzlich.
  • Beispiel F – erfüllt (Ausnahme: wesentlich). Die Ladeanzeige dreht sich acht Sekunden, also länger als fünf, und lässt sich nicht anhalten. Trotzdem ist das Kriterium erfüllt: Sie zeigt einen Ladevorgang an, während dessen es noch nichts zu lesen oder zu bedienen gibt – stell dir vor, die Trefferseite baut sich gerade erst auf –, und ohne sie sähe es aus, als hinge die Seite. Sie endet, sobald die Treffer da sind; Anfang und Ende werden als Statusmeldung ausgegeben.

Zur Steuerung: „Beispiel … starten“ und „Beispiel … stoppen“ gehören zur Übungsseite und zählen nicht als Mechanismus des Beispiels. Das Kriterium betrifft Inhalte, die von selbst starten – bewerte die Beispiele so, als liefen sie ab dem Laden der Seite.

Automatisch erkennbar? Nein. axe kennt nur Regeln für die veralteten Elemente marquee und blink; Bewegung aus CSS oder Skript sehen die Werkzeuge nicht. In den sechs Beispielen meldet axe nichts.

Grenzfall: Die Lade-Animation aus Beispiel F gilt nur deshalb als wesentlich, weil währenddessen ohnehin niemand etwas bedienen kann und ohne Anzeige der Eindruck entstünde, die Seite hänge. Dreht sich dieselbe Anzeige dauerhaft neben Inhalten, die man schon lesen und bedienen kann, braucht sie einen Mechanismus zum Anhalten. Dasselbe gilt für ein Hintergrundvideo, das nur schmückt.

Nicht-Beeinträchtigung: Wie 2.1.2 gilt 2.2.2 für alle Inhalte der Seite – ein Laufband ohne Halt stört das Lesen überall auf der Seite.

Verwandte Kriterien: 2.2.1 (Zeitlimits), 2.3.1 (alles, was schneller als dreimal pro Sekunde blitzt), 1.4.2 (Ton, der von selbst startet). Bewegung nach der Systemeinstellung „Bewegung reduzieren“ abzuschalten (prefers-reduced-motion) ist eine gute Ergänzung, gehört aber zu einem Kriterium der Stufe AAA und ersetzt den Mechanismus auf der Seite nicht.

2.3.1 Grenzwert von dreimaligem Blitzen oder weniger

Stufe A, Hintergrund beim W3C: Understanding 2.3.1 (englisch)

Auf einer Seite darf nichts häufiger als dreimal pro Sekunde blitzen – es sei denn, das Blitzen bleibt unter den Grenzwerten für allgemeine Blitze und Rotblitze, weil es sehr klein oder sehr schwach ist. Blitze können bei Menschen mit fotosensitiver Epilepsie Anfälle auslösen.

So prüfst du: Durch Hinsehen. Blinkt oder blitzt etwas – auch in Videos, animierten Bildern und Werbung? Zähle, wie oft es pro Sekunde hin und her springt – ein Blitz ist einmal hin und zurück. Bis drei pro Sekunde ist das Kriterium ohne jede Messung erfüllt. Darüber kommt es auf Fläche, Helligkeitsunterschied und Rotanteil an; im Zweifel misst das Werkzeug PEAT (Photosensitive Epilepsy Analysis Tool, nur für Windows) eine Bildschirmaufnahme. Auf dem Mac bleibt die Sichtprüfung. Reagierst du selbst empfindlich auf Blitze, überlass diese Prüfung jemand anderem.

Beispiel A: Abholhinweis

Steuerung der Übungsseite – gehört nicht zum Beispiel. Stell dir vor, der Hinweis erschiene gerade neu auf der Seite. Beispiel A ruht.

Neu: Deine Vormerkung „Der Garten im Winter“ liegt zur Abholung bereit.

Abholung an der Ausgabe in der Hauptstelle, sieben Öffnungstage lang.

Beispiel B: Werbebanner (Standbilder)

Standbild 1 Bücherflohmarkt! Samstag ab 10 Uhr

Standbild 2 Bücherflohmarkt! Samstag ab 10 Uhr

So verhält sich das Banner auf der echten Seite:

  • Standbild 1: weißer Grund, dunkelblaue Schrift. Standbild 2: kräftig roter Grund, weiße Schrift.
  • Es liegt über die ganze Breite der Startseite, 1200 × 300 Pixel groß.
  • Es springt zehnmal pro Sekunde zwischen Standbild 1 und Standbild 2 hin und her.
  • Es läuft, solange die Seite offen ist; anhalten lässt es sich nicht.

Beispiel C: Live-Symbol (Standbilder)

Standbild 1 Live aus dem Lesesaal

Standbild 2 Live aus dem Lesesaal

So verhält sich das Symbol auf der echten Seite:

  • Es ist 16 × 16 Pixel groß und steht in der Kopfzeile vor dem Wort „Live“.
  • Es springt fünfmal pro Sekunde zwischen Dunkelgrau und Weiß hin und her.
  • Es läuft, solange die Übertragung dauert; anhalten lässt es sich nicht. Sonst blinkt auf der Seite nichts.
Auflösung zu 2.3.1
  • Beispiel A – erfüllt. Der Punkt vor „Neu“ blinkt einmal pro Sekunde, also weit unter der Grenze von drei Blitzen pro Sekunde – da braucht es keine Messung. Er hört nach vier Sekunden von selbst auf; damit ist auch 2.2.2 erfüllt, das für Blinken über fünf Sekunden einen Mechanismus zum Anhalten verlangt.
  • Beispiel B – nicht erfüllt (nur beschrieben). Zehn Blitze pro Sekunde liegen über der Grenze von drei. Die Ausnahme greift nicht: Die Fläche ist groß, der Wechsel zwischen Weiß und kräftigem Rot ist ein starker Helligkeitssprung und zugleich ein Rotblitz. So ein Banner kann Anfälle auslösen. Im Befund bekommt es die höchste Dringlichkeit: sofort entfernen, nicht erst mit dem nächsten Release.
  • Beispiel C – erfüllt (Grenzfall, nur beschrieben). Fünf Blitze pro Sekunde sind mehr als drei – aber die Fläche ist winzig. Unter den Grenzwerten bleibt, was zusammen höchstens ein Viertel eines Sehfelds von 10 Grad einnimmt. Als Faustregel nennt das W3C für dieses Sehfeld ein Rechteck von 341 × 256 Pixeln bei einer Darstellung von 1024 × 768 Pixeln; ein Viertel davon sind rund 21 800 Quadratpixel, das Symbol hat 256. 2.3.1 ist damit erfüllt. Nicht erfüllt ist 2.2.2: Das Symbol blinkt länger als fünf Sekunden und lässt sich nicht anhalten. Empfehlung trotzdem: langsamer als dreimal pro Sekunde, dann stellt sich die Frage nach der Fläche gar nicht.

Warum hier nichts blitzt: Beispiel B wäre gefährlich, und auch Beispiel C soll niemand unvorbereitet sehen. Die Standbilder selbst sind harmlos. Wenn du im Auftrag eine Seite mit Blitzen prüfst: warnen, bevor du den Bildschirm teilst, und eine Aufnahme auswerten statt die Seite laufen zu lassen.

Die Grenzwerte in Kürze: Ein allgemeiner Blitz ist ein Paar gegenläufiger Helligkeitswechsel um mindestens 10 % der größtmöglichen relativen Leuchtdichte, bei dem das dunklere Bild unter 0,80 liegt. Ein Rotblitz ist jedes Paar gegenläufiger Wechsel, an dem ein gesättigtes Rot beteiligt ist. Erfüllt ist das Kriterium, wenn es höchstens drei solcher Blitze pro Sekunde gibt oder die blitzende Fläche klein genug bleibt.

Zur Steuerung: „Beispiel A starten“ und „Beispiel A stoppen“ gehören zur Übungsseite, nicht zum Beispiel.

Automatisch erkennbar? Nein. axe, WAVE und Lighthouse erkennen kein Blitzen; axe meldet in den drei Beispielen nichts. Für Zweifelsfälle gibt es PEAT, im Kurs wird es nur erwähnt.

Nicht-Beeinträchtigung: 2.3.1 gilt für alle Inhalte der Seite, auch für solche, für die es eine barrierefreie Alternative gibt – ein Anfall lässt sich nicht durch eine Alternativfassung ungeschehen machen.

Verwandte Kriterien: 2.2.2 (Blinken und Bewegung, die länger als fünf Sekunden laufen). Blinken ist langsamer und soll Aufmerksamkeit wecken; springt es öfter als dreimal pro Sekunde hin und her, zählt es als Blitzen.

2.4.1 Blöcke umgehen

Stufe A, Hintergrund beim W3C: Understanding 2.4.1 (englisch)

Blöcke, die auf mehreren Seiten wiederkehren – Kopfbereich, Navigation, Seitenleiste –, lassen sich überspringen. Dafür braucht es einen Mechanismus, der funktioniert: einen Sprunglink zum Inhalt oder eine Struktur aus Landmarks und Überschriften, über die Hilfsmittel direkt zum Inhalt springen.

So prüfst du: Lade die Seite neu und drücke einmal Tab: Erscheint ein Sprunglink? Drücke Enter und danach noch einmal Tab: Steht der Fokus jetzt im Inhalt oder wieder in der Navigation? Sieh dir dann die Struktur an: mit NVDA D für Landmarks, H für Überschriften und Einfg + F7 für die Elementliste, mit der Windows-Sprachausgabe Sprachausgabe-Taste + F5 (Landmarks) und F6 (Überschriften), mit VoiceOver den Rotor (VO + U). Ohne Screenreader zeigen Accessibility Insights (Chrome, Edge) und der Reiter „Structure“ in WAVE Landmarks und Überschriften; im Inspektor suchst du nach main, nav und h1. In Safari erreichst du Links mit Wahltaste + Tab, solange die Tastaturnavigation nicht in den Einstellungen eingeschaltet ist.

Auflösung zu 2.4.1
  • Beispiel A – nicht erfüllt. Das ist die Beispielsite „Zwei“. Es gibt keinen Sprunglink, keine Landmarks und keine Überschriften-Elemente; der lange Kopf mit vielen Links steht auf jeder Seite vor dem Inhalt. Wer mit der Tastatur arbeitet, tabbt auf jeder Seite erneut durch alle diese Links. Screenreader-Nutzende finden weder eine Landmark noch eine Überschrift, die sie anspringen könnten. Du merkst es am ersten Tab (er landet auf dem ersten Link im Kopf) und an den leeren Listen für Landmarks und Überschriften. Die fehlende Auszeichnung der Überschriften verletzt außerdem 1.3.1.
  • Beispiel B – erfüllt. Das ist die Beispielsite „Eins“. Beim ersten Tab erscheint ein Sprunglink, Enter führt in den Hauptinhalt, der nächste Tab landet dort. Dazu kommen header, nav, main und footer sowie Überschriften – mehrere Wege für verschiedene Arbeitsweisen.
  • Beispiel C – erfüllt (Grenzfall). Kein Sprunglink, aber saubere Landmarks (header, nav, main, footer) und Überschriften am Beginn jedes Abschnitts. Beides zählt bei der WCAG als ausreichende Technik (ARIA11, H69). Die Schwäche: Sehende Tastaturnutzende ohne Screenreader haben meist keinen Befehl für Landmarks und tabben hier durch alle acht Links der Navigation. Das gehört als Empfehlung in den Bericht, nicht als Verstoß.
  • Beispiel D – nicht erfüllt. Der Sprunglink ist da und wird beim Fokus sichtbar, zeigt aber auf #inhalt – und ein Element mit dieser id gibt es nicht (der Inhaltsbereich heißt hauptteil). Nach Enter passiert nichts, der nächste Tab landet in der Navigation. Landmarks und Überschriften-Elemente, die den Mangel auffangen könnten, fehlen ebenfalls (das verletzt außerdem 1.3.1). Ein Mechanismus, der nicht funktioniert, ist keiner.

Die Übungsseite selbst erfüllt das Kriterium: Sprunglink „Zum Inhalt springen“, Landmarks und Überschriften.

Automatisch erkennbar? Teilweise. Die axe-Regel bypass sucht nur nach einem seiteninternen Link, einer Überschrift oder einer Landmark. Auf der Startseite von Beispiel A findet sie nichts davon und führt die Seite unter „zu prüfen“; auf der Seite „Ausleihe“ derselben Website genügt ihr schon der erste Link des Inhaltsverzeichnisses (href="#ausweis"), und sie meldet nichts. In Beispiel D findet sie den Link href="#inhalt" und ist zufrieden – dass das Ziel fehlt, meldet nur die Zusatzregel skip-link aus den „Best Practices“, die in vielen Prüfläufen ausgeschaltet ist. Ob ein Sprunglink ans Ziel führt, zeigt verlässlich nur der Versuch mit der Tastatur.

Grenzfall: Ein Sprunglink darf unsichtbar sein, bis er den Fokus bekommt. Bleibt er auch beim Fokus unsichtbar, ist das ein Befund für 2.4.7. Einzelne wiederholte Wörter oder Links gelten nicht als Block; gemeint sind Bereiche wie Navigation, Kopf oder Werbespalte.

Verwandte Kriterien: 1.3.1 verlangt, dass sichtbare Struktur auch im Code steht – ohne sie gibt es keine Landmarks und Überschriften zum Anspringen. 2.4.3 prüft die Reihenfolge der Tabstopps, 2.4.7 die Sichtbarkeit des Fokus.

2.4.2 Seite mit Titel versehen

Stufe A, Hintergrund beim W3C: Understanding 2.4.2 (englisch)

Jede Seite hat einen Titel, der ihr Thema oder ihren Zweck beschreibt. Gemeint ist der Titel der Seite (title im head), nicht die sichtbare Hauptüberschrift.

So prüfst du: Lies die Beschriftung des Browser-Tabs; der ganze Titel erscheint, wenn du mit der Maus auf dem Tab stehen bleibst. Sicherer ist der Quelltext (Strg + U, am Mac Cmd + Wahltaste + U, dann nach <title suchen) oder die Eingabe document.title in der Konsole der Entwicklerwerkzeuge. Mit Screenreader: Der Titel wird beim Laden angesagt, NVDA wiederholt ihn mit Einfg + T. Öffne mehrere Seiten nebeneinander und vergleiche die Tabs. In einer Web-Anwendung wechselst du die Ansicht und liest den Titel danach noch einmal.

Auflösung zu 2.4.2
  • Beispiel A – erfüllt. Das ist die Beispielsite „Eins“. Jeder Titel nennt zuerst das Thema der Seite und dann die Website: „Start – Stadtbücherei Lindenau“, „Ausleihe – Stadtbücherei Lindenau“, „Anmeldung, Schritt 2 von 3: Angaben zur Person – Stadtbücherei Lindenau“. Kein Titel kommt zweimal vor, auch die Schritte der Anmeldung lassen sich am Titel unterscheiden. Wer zwanzig Tabs offen hat, eine Lesezeichenliste durchgeht oder sich den Titel vom Screenreader ansagen lässt, weiß sofort, wo er ist.
  • Beispiel B – nicht erfüllt. Das ist die Beispielsite „Zwei“. Start und Ausleihe heißen beide „Home“, alle drei Schritte der Anmeldung „Formular“. Weitere Seiten der Website heißen „Neue Seite 3“ und „Neue Seite 5“, die Bestätigungsseite hat einen leeren Titel. Die Titel sagen nichts über Thema oder Zweck, und mehrere Seiten sind am Titel nicht zu unterscheiden. Betroffen sind Screenreader-Nutzende, die beim Laden und beim Wechsel zwischen Fenstern zuerst den Titel hören, und alle, die mit vielen Tabs, Lesezeichen oder dem Verlauf arbeiten.
  • Beispiel C – nicht erfüllt (Grenzfall). Die Anwendung tauscht den ganzen Hauptinhalt aus und ändert die Adresse (#ausleihen, #vormerkungen, #gebuehren), der Titel bleibt aber immer „Mein Konto – Stadtbücherei Lindenau“. Lesezeichen und Verlauf zeigen dreimal denselben Eintrag. Die Erläuterungen des W3C sagen dazu: Wechselt eine Single-Page-Anwendung die Ansicht, soll auch der Titel wechseln. Dagegen lässt sich einwenden, dass für eine Web-Anwendung der Name der Anwendung als Titel genügt – deshalb im Befund begründen, warum die Ansichten hier wie eigene Seiten wirken.
  • Beispiel D – erfüllt. Dieselbe Anwendung, aber mit jeder Ansicht wechselt der Titel: „Ausleihen – Mein Konto – Stadtbücherei Lindenau“ und so weiter. Das Skript setzt document.title bei jedem Wechsel neu.

Automatisch erkennbar? Teilweise. axe (Regel document-title), WAVE und Lighthouse melden nur einen fehlenden oder leeren Titel. In der Website von Beispiel B trifft das allein die Bestätigungsseite am Ende der Anmeldung, die nicht unter den fünf verlinkten Seiten ist; auf den fünf Seiten selbst meldet kein Werkzeug etwas zum Titel. Ob „Home“ oder „Neue Seite 3“ die Seite beschreibt, beurteilt kein Werkzeug; in den Beispielen C und D meldet axe nichts.

Grenzfall Prozessschritte: Heißen alle Schritte eines Prozesses gleich („Anmeldung“), ist der Zweck zwar benannt, aber niemand erkennt am Titel, in welchem Schritt er steckt. Beispiel B zeigt das mit dreimal „Formular“; Beispiel A macht es vor: Prozess, Schritt, Thema des Schritts, Website. Ob gleiche, aber treffende Schritttitel schon ein Verstoß sind, ist Ermessen – im Befund begründen.

Stolperstelle: Nicht die Hauptüberschrift prüfen. Eine Seite kann eine treffende h1 haben und trotzdem „Home“ heißen. Das Wichtige gehört nach vorn: Bei „Stadtbücherei Lindenau – Ausleihe“ sieht man in schmalen Tabs nur noch den Namen der Website.

Verwandte Kriterien: 2.4.6 stellt dieselbe Frage an Überschriften und Beschriftungen. 2.4.4: Linktext und Titel der Zielseite passen im besten Fall zusammen. Dass sich ein Ansichtswechsel auch Screenreader-Nutzenden mitteilt, ist eine Frage von Fokusführung (2.4.3) und Statusmeldungen (4.1.3).

2.4.3 Fokus-Reihenfolge

Stufe A, Hintergrund beim W3C: Understanding 2.4.3 (englisch)

Wer mit Tab durch eine Seite geht, erreicht die Bedienelemente in einer Reihenfolge, die Sinn und Bedienbarkeit erhält. Die Reihenfolge muss nicht der Anordnung auf dem Bildschirm entsprechen – aber sie darf nicht springen, ins Leere führen oder am gerade Wichtigen vorbeilaufen.

So prüfst du: Gehe mit Tab vorwärts und mit Umschalt + Tab rückwärts und halte die Stopps gegen die Leserichtung. Zähle mit: Drückst du Tab, ohne dass ein Fokus zu sehen ist, steht er auf einem unsichtbaren Element – in der Konsole der Entwicklerwerkzeuge zeigt document.activeElement, wo. Öffne und schließe jeden Dialog mit der Tastatur: Wo steht der Fokus danach? Tabstopps sichtbar machen: „Tab stops“ in Accessibility Insights (Chrome, Edge) oder im Firefox-Inspektor unter „Barrierefreiheit“ die Tabulator-Reihenfolge. Im Quelltext nach tabindex mit Werten größer als 0 suchen. Am Mac muss die Tastaturnavigation eingeschaltet sein; in Safari sonst Wahltaste + Tab.

Beispiel A

Lesung: Ida Brandt liest aus „Nebel über dem Kanal“

Donnerstag, 12. November 2026, 19 Uhr, Lesesaal. Der Eintritt ist frei, es gibt 40 Plätze.

Beispiel B

Lesung: Ida Brandt liest aus „Nebel über dem Kanal“

Donnerstag, 12. November 2026, 19 Uhr, Lesesaal. Der Eintritt ist frei, es gibt 40 Plätze.

Auflösung zu 2.4.3
  • Beispiel A – erfüllt. Beim Öffnen springt der Fokus in den Dialog, auf das erste Bedienelement. Tab und Umschalt + Tab bleiben im Dialog, der Ausschnitt dahinter ist so lange nicht bedienbar (inert). „Reservieren“, „Abbrechen“ und Esc schließen den Dialog, der Fokus kehrt zur Schaltfläche „Platz reservieren“ zurück. Dass der Fokus im offenen Dialog bleibt, ist gewollt und keine Tastaturfalle (2.1.2).
  • Beispiel B – nicht erfüllt. Derselbe Dialog, aber das Skript blendet ihn nur ein und aus. Beim Öffnen bleibt der Fokus auf „Platz reservieren“; der nächste Tab läuft durch die drei Links hinter dem Dialog, erst danach kommt die Auswahl. Nach dem Schließen ist der Fokus weg: Je nach Browser geht es am Seitenanfang oder irgendwo hinter dem Dialog weiter, jedenfalls nicht beim Auslöser. Sehende Tastaturnutzende suchen den Fokus, Screenreader-Nutzende bekommen vom Dialog zunächst gar nichts mit. Dazu kommt: aria-modal="true" behauptet, der Rest der Seite sei gesperrt – das stimmt hier nicht (siehe 4.1.2). Du merkst es, wenn du nach dem Öffnen und nach dem Schließen document.activeElement abfragst.
  • Beispiel C – nicht erfüllt. Das zugeklappte Menü ist nur zusammengeschoben (max-height: 0, overflow: hidden). Seine vier Links bleiben in der Tab-Reihenfolge: Zwischen „Menü“ und „Öffnungszeiten im November“ drückst du viermal Tab, ohne einen Fokus zu sehen. Screenreader lesen die vier Links vor, obwohl die Schaltfläche „reduziert“ meldet. Manche Prüfende ordnen den verschwundenen Fokus 2.4.7 zu – beides ist vertretbar, im Befund begründen.
  • Beispiel D – erfüllt. Das zugeklappte Menü trägt hidden. Seine Links sind damit für alle weg, auch für die Tab-Reihenfolge: Von „Menü“ führt ein Tab zum Link im Text. Aufgeklappt stehen die vier Links im Quelltext und in der Tab-Reihenfolge direkt hinter der Schaltfläche – der nächste Tab nach dem Öffnen landet auf „Katalog“. Stünde ein anderes Bedienelement dazwischen, wäre das ein Fall für den Failure F85.
  • Beispiel E – erfüllt. Kein tabindex. Die Reihenfolge folgt dem Quelltext und damit der Seite: Sprunglink, drei Links der Navigation, Vorname, Nachname, Ausweisnummer, E-Mail, Laufzeit, Einwilligung, „Ausweis verlängern“ – und ganz am Ende der Link zurück zur Übungsseite.
  • Beispiel F – nicht erfüllt. Fünf Elemente tragen tabindex mit den Werten 1 bis 5. Der Browser läuft diese zuerst ab, in der Folge der Zahlen: Vorname, Nachname, E-Mail, Ausweisnummer, dann schon die Schaltfläche „Ausweis verlängern“. Erst danach kommen Sprunglink und Navigation – und zum Schluss die Laufzeit und die Einwilligung, die vor dem Absenden nötig wären. Wer nur mit der Tastatur arbeitet oder mit Vergrößerung dem Fokus folgt, sendet ab, bevor alles ausgefüllt ist.

Automatisch erkennbar? Kaum. Die Reihenfolge selbst beurteilt kein Werkzeug. axe kennt für positive tabindex-Werte die Regel tabindex, sie gehört aber zu den „Best Practices“ und läuft in einer reinen WCAG-Prüfung nicht mit. In den Beispielen A bis D meldet axe nichts.

Grenzfall: Nach dem Schließen eines Dialogs landet der Fokus am Seitenanfang. In einem langen Prozess ist das nicht erfüllt, weil man seine Stelle verliert. Auf einer kurzen Seite, deren Auslöser ganz oben steht, ist es vertretbar erfüllt. Die Rückgabe an den Auslöser gehört in jede Empfehlung. Ein positiver tabindex ist für sich noch kein Verstoß – er ist nur fast immer die Ursache, wenn die Reihenfolge springt.

Verwandte Kriterien: 1.3.2 betrifft die Lesereihenfolge des Inhalts, 2.4.3 die Reihenfolge der Tabstopps. 2.1.2: Eine Falle hält den Fokus fest, hier geht es darum, wohin er läuft. 2.4.7 fragt, ob der Fokus zu sehen ist, 2.4.11, ob etwas ihn verdeckt. Den Dialog mit allen betroffenen Kriterien gibt es noch einmal als Komponente „Modaler Dialog“ weiter unten auf der Seite.

2.4.4 Linkzweck (im Kontext)

Stufe A, Hintergrund beim W3C: Understanding 2.4.4 (englisch)

Wohin ein Link führt, ergibt sich aus dem Linktext allein – oder aus dem Linktext zusammen mit einem Kontext, den auch Programme dem Link zuordnen können: derselbe Satz, derselbe Absatz, derselbe Listenpunkt, dieselbe Tabellenzelle mit ihren Kopfzellen. Ausgenommen sind Links, deren Zweck für alle Nutzenden offen bleibt.

So prüfst du: Rufe die Linkliste des Screenreaders auf (NVDA: Einfg + F7, Windows-Sprachausgabe: Sprachausgabe-Taste + F7, VoiceOver: Rotor mit VO + U, dann „Links“) und lies, was dort als Name steht. Ohne Screenreader: Element untersuchen und im Barrierefreiheitsbaum den Namen des Links ablesen. Reicht der Name nicht, sieh im Quelltext nach, in welchem Element der Link steckt: Steht die Erklärung im selben Satz, Absatz (p), Listenpunkt (li) oder in der Tabellenzelle samt Kopfzelle? Was nur auf dem Bildschirm daneben steht, zählt nicht.

Beispiel A: Acht Links mit „mehr“

Link 1

Ab November verleihen wir auch Werkzeug und Musikinstrumente (mehr).

Link 2

Der Lesesaal im ersten Stock ist nach dem Umbau wieder geöffnet. Es gibt 40 Arbeitsplätze mit Steckdosen und WLAN. mehr

Link 3

  • Dienstag, 16 Uhr: Vorlesestunde für Kinder ab vier Jahren
  • Donnerstag, 19 Uhr: Lesung mit der Krimiautorin Ida Brandt mehr
  • Samstag, 11 Uhr: Führung durch das Magazin

Link 4

Kurse im November
KursWannInfos
Tablet-Hilfe3.11. 10 Uhrgratis
Suchen im Katalog14.11. 15 Uhrmehr
Kino für Kinder21.11. 11 Uhrab 3 Jahren

Link 5

Bücherbus: neue Haltestellen

mehr

Link 6

Onleihe: E-Books und Hörbücher

mehr

Link 7

Sommerleseclub für Kinder

mehr zum Sommerleseclub

Link 8

Der Förderverein sucht Menschen, die in Kitas vorlesen.

Die Beschriftungen „Link 1“ bis „Link 8“ gehören zur Übungsseite, nicht zum Beispiel. Jeder Link führt zu einem kurzen Zieltext auf einer eigenen Seite; von dort kommst du mit „Zurück zur Übungsseite“ wieder hierher.

Auflösung zu 2.4.4
  • Link 1 – erfüllt. Der Link steht im selben Satz wie „Werkzeug und Musikinstrumente“. Der Satz ist programmatisch ermittelbarer Kontext (Technik G53).
  • Link 2 – erfüllt. Der Link steht im selben Absatz (p) wie der Text zum Lesesaal (H78). Ein Screenreader liest den Absatz auf einen Tastendruck vor.
  • Link 3 – erfüllt. Der Link steht im selben Listenpunkt (li) wie die Lesung (H77).
  • Link 4 – erfüllt. Der Link steht in einer Tabellenzelle; die Zeilenkopfzelle „Suchen im Katalog“ und die Spaltenkopfzelle „Infos“ sind ihr über th und scope zugeordnet (H79). Ohne diese Auszeichnung wäre der Kontext nur sichtbar.
  • Link 5 – nicht erfüllt (Streitfall, Kursposition). Der Absatz enthält nur den Link; was er meint, steht allein in der Überschrift darüber. Die Überschrift gehört nicht zu dem, was die WCAG als programmatisch ermittelten Linkkontext aufzählt; die Technik dazu (H80) ist bei 2.4.4 nur beratend. In der Linkliste steht „mehr“ ohne jeden Anhaltspunkt. Manche Prüfende bewerten das milder – schreibe das in den Befund. Eine gut begründete Wertung „erfüllt“ ist kein Fehler.
  • Link 6 – erfüllt. aria-label="mehr über die Onleihe" gibt dem Link einen Namen, der das Ziel nennt (ARIA8). Der Name beginnt mit dem sichtbaren Text, das passt auch für 2.5.3. Besser wäre trotzdem ein sichtbar vollständiger Linktext: Er hilft auch denen, die die Seite überfliegen oder mit Sprachsteuerung arbeiten.
  • Link 7 – erfüllt. Der Linktext lautet vollständig „mehr zum Sommerleseclub“; der zweite Teil ist nur visuell ausgeblendet (C7). So steht er auch in der Linkliste.
  • Link 8 – nicht erfüllt. Der Satz zum Förderverein steht in einem eigenen Block neben dem Link – anderer Absatz, anderes div, keine Verbindung im Code (Failure F63). Auf dem Bildschirm wirkt beides zusammengehörig, ein Screenreader liest in der Linkliste und beim Springen von Link zu Link nur „mehr“.

Automatisch erkennbar? Kaum. axe meldet zu keinem der acht Links etwas: Jeder hat einen Namen, und den Kontext beurteilt das Werkzeug nicht. Werkzeuge finden leere Links und Bildlinks ohne Alternativtext; ob ein Kontext zählt, entscheidest du selbst.

Grenzfall: Ist der Zweck eines Links für alle Nutzenden offen – etwa ein Rätsellink „Lass dich überraschen“ –, greift die Ausnahme: Niemand ist im Nachteil. Linktext ganz ohne Kontext verlangt erst 2.4.9 (Stufe AAA).

Verwandte Kriterien: 1.1.1 und 4.1.2, wenn ein Bild der einzige Inhalt eines Links ist und keinen Alternativtext hat. 2.5.3 verlangt, dass der sichtbare Text im zugänglichen Namen vorkommt (Link 6). 2.4.6 stellt dieselbe Frage an Überschriften und Beschriftungen.

2.4.5 Verschiedene Methoden

Stufe AA, Hintergrund beim W3C: Understanding 2.4.5 (englisch)

Jede Seite einer Website lässt sich auf mehr als einem Weg finden – zum Beispiel über die Navigation und über eine Suche oder eine Inhaltsübersicht. Ausgenommen sind Seiten, die Schritt oder Ergebnis eines Prozesses sind.

So prüfst du: Wähle eine Unterseite und zähle von der Startseite aus die Wege dorthin: Navigation, Suche, Inhaltsübersicht (Sitemap), Links im Inhalt. Probiere die Suche wirklich aus: Findet sie die gewählte Seite? Ein Suchfeld, das nichts findet, ist kein Weg. Prüfe danach, ob die Seite zu einem Prozess gehört – dann greift die Ausnahme.

Auflösung zu 2.4.5
  • Beispiel A – nicht erfüllt. Das ist die Beispielsite „Zwei“. Zur Seite „Ausleihe“ führen nur Links im Kopf der Seiten: der Punkt in der Hauptnavigation und die Zeilen mit den Schnellzugriffen darüber und darunter. Auch die Auswahlliste „Direkt zu …“ im Kopf gehört dazu: Sie ist dieselbe Linkliste in anderer Form, keine Suche und keine Inhaltsübersicht. Sie fehlt auf den Seiten der Anmeldung, hat keinen Namen und wechselt die Seite schon bei der Auswahl (siehe 4.1.2 und 3.2.2). Das alles ist ein Weg – die Navigation. Eine Suche oder eine Inhaltsübersicht gibt es nicht, und im Inhalt verweist keine Seite auf „Ausleihe“. Menschen, die sich in einer Menüstruktur schwer zurechtfinden, und Menschen, für die jeder Tabstopp Aufwand ist, haben keinen anderen Weg – etwa ein Suchwort einzugeben oder eine Liste aller Seiten zu überfliegen. Du merkst es beim Zählen: Es bleibt bei einem Weg.
  • Beispiel B – erfüllt. Das ist die Beispielsite „Eins“. Drei Wege führen zu „Ausleihe“: die Navigation, die Suche (das Suchwort „Ausleihe“ oder „Leihfrist“ findet die Seite) und die Inhaltsübersicht. Zwei hätten genügt, zum Beispiel Navigation und Suche oder Navigation und Inhaltsübersicht.
  • Beispiel C – erfüllt (Ausnahme). Schritt 2 der Anmeldung ist ein Schritt in einem Prozess. Er ist nur über Schritt 1 erreichbar und muss es auch nur so sein – für solche Seiten verlangt das Kriterium keinen zweiten Weg. Das gilt, obwohl die Website als Ganzes (Beispiel A) das Kriterium nicht erfüllt: Geprüft wird die einzelne Seite im Seitenverbund. Auch die Bestätigungsseite am Ende ist als Ergebnis eines Prozesses ausgenommen. Erfüllt ist hier nur 2.4.5: Die Seite gehört zur Beispielsite „Zwei“ und hat andere Barrieren.

Automatisch erkennbar? Nein. axe, WAVE und Lighthouse prüfen eine einzelne Seite und zählen keine Wege durch eine Website.

Grenzfall: Querverweise im Inhalt können als Weg zählen (Technik G125): Zur Seite „Veranstaltungen“ führen in Beispiel A neben der Navigation auch Links im Inhalt der Startseite. Ob das genügt, ist Ermessen – für „Ausleihe“ gibt es nicht einmal das. Eine Suche, die nur den Medienkatalog durchsucht, aber nicht die Infoseiten, zählt für die Infoseiten nicht als zweiter Weg – dann braucht es eine Inhaltsübersicht oder Querverweise. Bei kleinen Websites kann auch eine Startseite, die im Inhalt auf alle Seiten verlinkt, als Weg zählen (Technik G185). Besteht eine Website aus nur einer Seite, ist das Kriterium nicht anwendbar.

Verwandte Kriterien: 3.2.3 verlangt, dass die Navigation auf allen Seiten gleich aufgebaut ist; 2.4.1, dass man sie überspringen kann. Alle drei lassen sich nur an mehreren Seiten derselben Website prüfen.

2.4.6 Überschriften und Beschriftungen (Labels)

Stufe AA, Hintergrund beim W3C: Understanding 2.4.6 (englisch)

Überschriften und Beschriftungen beschreiben das Thema oder den Zweck dessen, was folgt. Das Kriterium fragt nur, ob vorhandene Überschriften und Beschriftungen beschreiben – nicht, ob es sie gibt.

So prüfst du: Lies nur die Überschriftenliste: NVDA Einfg + F7, Windows-Sprachausgabe Sprachausgabe-Taste + F6 (die Sprachausgabe-Taste ist die Feststelltaste oder Einfg), VoiceOver Rotor mit VO + U; ohne Screenreader die Erweiterung HeadingsMap oder der Reiter „Structure“ in WAVE. Ohne jede Installation: In der Konsole der Entwicklerwerkzeuge listet [...document.querySelectorAll('#k-2-4-6 :is(h5,h6)')].map(h => h.tagName + ' ' + h.textContent.trim()) die Überschriften der drei Beispiele auf (auf einer anderen Seite steht in den Anführungszeichen h1,h2,h3,h4,h5,h6); die Namen der Formularfelder stehen im Barrierefreiheitsbaum. Verstehst du, worum es in jedem Abschnitt geht, ohne den Text darunter zu lesen? Kannst du die Abschnitte auseinanderhalten? Lies dann jede Beschriftung der Formularfelder und Schaltflächen für sich: Weißt du, was einzutragen ist oder was passiert?

Beispiel A

Informationen
Mehr erfahren

Der Leseausweis gilt zwölf Monate. Du verlängerst ihn am Infotresen oder im Ausleihkonto.

Mehr erfahren

Gruppenräume für bis zu sechs Personen kannst du vier Wochen im Voraus reservieren.

Mehr erfahren

Jeden Mittwoch um 16 Uhr lesen wir Kindern ab vier Jahren vor.

Formular

Beispiel B

Service der Stadtbücherei
Leseausweis verlängern

Der Leseausweis gilt zwölf Monate. Du verlängerst ihn am Infotresen oder im Ausleihkonto.

Gruppenraum reservieren

Gruppenräume für bis zu sechs Personen kannst du vier Wochen im Voraus reservieren.

Vorlesestunde für Kinder

Jeden Mittwoch um 16 Uhr lesen wir Kindern ab vier Jahren vor.

Medium vormerken

Beispiel C

Willkommen

Die Stadtbücherei Lindenau hat rund 60.000 Medien, drei Standorte und einen Bücherbus.

Öffnungszeiten in den Herbstferien

Vom 19. bis 31. Oktober öffnet die Hauptstelle schon um 9 Uhr.

Neu: Werkzeug und Instrumente ausleihen

In der Bibliothek der Dinge stehen ab November Bohrmaschinen, Nähmaschinen und Gitarren bereit.

Auflösung zu 2.4.6
  • Beispiel A – nicht erfüllt. In der Überschriftenliste stehen „Informationen“, dreimal „Mehr erfahren“ und „Formular“. Keine davon sagt, worum es im Abschnitt geht, und die drei Karten sind nicht zu unterscheiden. Die Beschriftungen „Nummer“, „Text“ und „Auswahl“ nennen die Art der Eingabe, nicht ihren Zweck: Welche Nummer? Welcher Text? Das trifft Menschen, die per Überschrift navigieren oder Seiten überfliegen, und alle, die im Formular von Feld zu Feld springen und nur die Beschriftung hören. „Absenden“ ist für sich schwach, aber üblich. Weil unklar bleibt, was einzutragen ist, ist je nach Lesart auch 3.3.2 betroffen.
  • Beispiel B – erfüllt. Dieselben Inhalte, aber jede Überschrift nennt das Thema ihres Abschnitts und jede Beschriftung den Zweck des Feldes. Die Überschriftenliste liest sich wie ein Inhaltsverzeichnis. Kurz ist erlaubt: „Abholort“ genügt.
  • Beispiel C – erfüllt (Grenzfall). „Willkommen“ als oberste Überschrift beschreibt kein Thema – schwach, aber vertretbar, weil die beiden Überschriften darunter das Thema tragen. Das ist Ermessen: im Befund begründen und eine bessere Überschrift empfehlen, etwa „Stadtbücherei Lindenau: Aktuelles“.

Automatisch erkennbar? Nein. axe meldet in keinem der drei Beispiele etwas: Die Überschriften sind als Überschriften ausgezeichnet, jedes Feld hat eine verbundene Beschriftung. Ob der Wortlaut passt, sieht ein Werkzeug nicht.

Grenzfall: Nicht jede schwache Formulierung ist ein Verstoß. „Name“ über einem Namensfeld genügt. Fehlt eine Überschrift ganz, obwohl der Text sichtbar gegliedert ist, gehört das zu 1.3.1; fehlt die Beschriftung eines Eingabefelds, zu 3.3.2.

Verwandte Kriterien: 1.3.1 (Überschriften sind als solche ausgezeichnet), 3.3.2 (Eingabefelder haben Beschriftungen oder Anweisungen), 2.5.3 (die sichtbare Beschriftung steckt im zugänglichen Namen), 2.4.2 (dieselbe Frage für den Seitentitel), 2.4.4 (für Linktexte).

2.4.7 Fokus sichtbar

Stufe AA, Hintergrund beim W3C: Understanding 2.4.7 (englisch)

Jedes Element, das sich mit der Tastatur bedienen lässt, zeigt sichtbar an, wenn es den Fokus hat. Wie kräftig die Anzeige sein muss, legt dieses Kriterium nicht fest – nur, dass es sie gibt.

So prüfst du: Gehe mit Tab durch alle Bedienelemente und schau bei jedem Stopp, ob du erkennst, wo du bist – Links, Schaltflächen, Kontrollkästchen, Formularfelder, Menüpunkte, Reiter. Teste mit der Tastatur, nicht mit der Maus: Viele Seiten zeigen den Fokus nur bei Tastaturbedienung, und das ist zulässig. Siehst du nichts, frage in der Konsole document.activeElement ab und suche im Inspektor unter „Styles“ nach outline – dort lassen sich auch die Zustände :focus und :focus-visible erzwingen (beide einschalten: Viele Seiten hängen den Rahmen nur an :focus-visible). Prüfe in dem Browser, der für die Prüfung festgelegt ist: Jeder Browser zeichnet seinen Standardrahmen anders. Am Mac muss die Tastaturnavigation eingeschaltet sein; in Safari sonst Wahltaste + Tab.

Auflösung zu 2.4.7
  • Beispiel A – erfüllt. Alle fünf Elemente zeigen beim Fokus einen kräftigen Rahmen (3 Pixel, dunkles Violett auf Weiß, rund 9:1). Er erscheint bei Tastaturbedienung (:focus-visible); dass er nach einem Mausklick auf einen Link fehlt, ist zulässig.
  • Beispiel B – nicht erfüllt. Für alle fünf Elemente steht im CSS outline: none bei :focus, und einen Ersatz gibt es nicht. Beim Überfahren mit der Maus ändert sich die Fläche, beim Fokus ändert sich nichts. Wer ohne Maus arbeitet und sieht – mit Tastatur, Schalter oder Sprachsteuerung –, weiß nicht, welches Element Enter oder die Leertaste gerade auslöst. Du merkst es beim Tabben: fünf Tastendrücke, nichts zu sehen.
  • Beispiel C – erfüllt (Streitfall); 1.4.11 ist nicht erfüllt. Der Fokusrahmen ist da: 2 Pixel in Hellgrau (#d3d3d3) auf Weiß, gemessen 1,5:1. Nach dem Wortlaut fragt 2.4.7 nur, ob eine Fokusanzeige sichtbar ist; eine Kontrastschwelle steht dort nicht. Den Kontrast verlangt 1.4.11: mindestens 3:1 gegenüber angrenzenden Farben für alles, woran man einen Zustand erkennt. Viele Prüfende werten bei einem praktisch nicht wahrnehmbaren Rahmen beide Kriterien als nicht erfüllt. Die Grenze ist Ermessen – im Befund den Messwert nennen und das Urteil begründen, aber denselben Mangel nicht doppelt bewerten.

Automatisch erkennbar? Nein. axe meldet in keinem der drei Beispiele etwas; kein Werkzeug erkennt verlässlich, ob ein Fokus zu sehen ist.

Grenzfall: Sehen Hover und Fokus gleich aus, ist das in Ordnung. Schwierig wird es, wenn sich „Fokus“ und „ausgewählt“ nicht unterscheiden lassen, etwa bei Reitern. Auf farbigen Flächen kann der Standardrahmen des Browsers fast verschwinden – auch das ist dann ein Fall für 1.4.11.

Verwandte Kriterien: 1.4.11 (Kontrast der Fokusanzeige), 2.4.11 (das fokussierte Element ist nicht verdeckt), 2.4.3 (der Fokus steht auf einem unsichtbaren Element – dort Beispiel C). Fläche und Kontrastwechsel der Fokusanzeige regelt erst 2.4.13 auf Stufe AAA.

2.4.11 Fokus nicht verdeckt (Minimum)

Stufe AA, neu seit WCAG 2.2, Hintergrund beim W3C: Understanding 2.4.11 (englisch)

Bekommt ein Element den Tastaturfokus, darf es nicht vollständig hinter anderen Inhalten der Seite verschwinden – etwa hinter einer festen Kopfzeile, einem Cookie-Banner oder einer Chat-Schaltfläche. Teilweise verdeckt ist auf Stufe AA noch zulässig.

So prüfst du: Gehe mit Tab bis zum letzten Element der Seite und achte am unteren Rand auf Banner und Fußleisten. Gehe dann mit Umschalt + Tab zurück und achte am oberen Rand auf die Kopfzeile: Rückwärts landen Elemente oft genau dort. Wiederhole beides bei 200 % Zoom (Strg + +, am Mac Cmd + +; zurück mit Strg + 0 bzw. Cmd + 0) – feste Bereiche nehmen dann mehr vom Fenster ein. Ist ein fokussiertes Element nicht zu sehen, zeigt document.activeElement in der Konsole, wo der Fokus steht. In Safari rückwärts mit Wahltaste + Umschalt + Tab, solange die Tastaturnavigation nicht eingeschaltet ist.

Auflösung zu 2.4.11
  • Beispiel A – nicht erfüllt. Rückwärts getabbt liegt der Link „Kontakt“ am Ende des Textes vollständig unter der festen Kopfzeile: Er hat den Fokus, zu sehen ist nichts davon. Genau das verbietet das Kriterium (Failure F110). Vorwärts liegen „Datenschutz“ und „Impressum“ nur zur Hälfte unter dem Cookie-Banner – das allein wäre auf Stufe AA zulässig. Dass sich das Banner schließen lässt, hilft nicht: Die Ausnahme für schließbare Inhalte gilt nur für Inhalte, die Nutzende selbst geöffnet haben, und das Banner öffnet die Seite von sich aus. Betroffen sind sehende Tastaturnutzende und Menschen mit Vergrößerung, deren Ausschnitt ohnehin klein ist. Das CSS enthält kein scroll-padding.
  • Beispiel B – erfüllt. Dieselbe Seite mit scroll-padding-top und scroll-padding-bottom am html-Element (Technik C43): Der Browser hält beim Fokuswechsel Abstand zu Kopfzeile und Banner. Solange das Banner offen ist, bekommt die Seite außerdem unten so viel Platz, dass die letzten Links darüber stehen. In niedrigen Fenstern (unter 480 CSS-Pixel Höhe, etwa bei 200 % Zoom auf einem Laptop) sind Kopfzeile und Banner nicht mehr fest.
  • Beispiel C – erfüllt (Grenzfall). Die Abstände sind zu knapp bemessen: „Kontakt“ liegt rückwärts etwa zur Hälfte unter der Kopfzeile, „Impressum“ zur Hälfte unter dem Banner. Kein Element verschwindet ganz, also ist 2.4.11 erfüllt. Erst 2.4.12 (Stufe AAA) verlangt, dass gar nichts verdeckt ist. In den Bericht gehört es als Empfehlung – wer mit Vergrößerung arbeitet, erkennt an einem halben Wort wenig. Wie in Beispiel B sind Kopfzeile und Banner in niedrigen Fenstern nicht mehr fest, etwa bei 200 % Zoom auf einem Laptop; dann ist gar nichts verdeckt.

Automatisch erkennbar? Nein. axe meldet auf keiner der drei Seiten einen Verstoß. Ob ein Element verdeckt ist, hängt von Fenstergröße, Zoom und Scrollposition ab – das zeigt nur der Durchgang mit der Tastatur, vorwärts und rückwärts.

Grenzfall: Ist das Cookie-Banner ein modaler Dialog, der den Fokus hält, kann nichts Fokussiertes dahinter liegen – dann stellt sich die Frage bei 2.4.3. Inhalte, die Nutzende selbst geöffnet haben (ein Chatfenster, ein aufgeklapptes Menü), dürfen verdecken, wenn sich das fokussierte Element ohne Fokuswechsel wieder freilegen lässt, zum Beispiel mit Esc. Eine Kopfzeile, die beim Scrollen nach unten verschwindet und beim Scrollen nach oben wieder erscheint, taucht gerade beim Rückwärts-Tabben auf: prüfen, nicht vermuten. Wo ein Element nach dem Fokuswechsel genau steht, unterscheidet sich von Browser zu Browser; teste im festgelegten Prüfbrowser.

Verwandte Kriterien: 2.4.7 fragt, ob das Element eine Fokusanzeige hat – hier hat es eine, sie liegt nur unter etwas anderem. 1.4.10: Feste Bereiche, die bei 400 % Zoom den Inhalt zudecken, sind dort ein eigener Befund. Das Kriterium ist neu seit WCAG 2.2; in Prüfungen nach der älteren Fassung gehört es nicht zum Pflichtumfang – im Bericht vermerken.

2.5.1 Zeigergesten

Stufe A, Hintergrund beim W3C: Understanding 2.5.1 (englisch)

Was sich mit mehreren Fingern oder mit einer Bewegung entlang eines Pfades bedienen lässt – Zwei-Finger-Zoom, Wischen –, muss auch mit einem einzelnen Zeiger ohne Pfad gehen: tippen, klicken, doppeltippen, lange drücken. Ausgenommen sind Gesten, bei denen der Pfad selbst wesentlich ist.

So prüfst du: Am Smartphone jede Geste ausprobieren und dann fragen: Komme ich zum selben Ergebnis, wenn ich nur einmal tippe? Ohne Smartphone: Gerätemodus der Entwicklerwerkzeuge in Chrome oder Edge (bei geöffneten Werkzeugen Strg + Umschalt + M, am Mac Cmd + Umschalt + M). Wischen geht auch mit der Maus: Taste drücken, zügig waagerecht bewegen, loslassen. Den Zwei-Finger-Zoom der Karten löst du verlässlich nur auf einem Touchscreen aus; ob Umschalt + Ziehen im Gerätemodus deines Browsers ihn nachstellt, probierst du aus. Die Prüffrage bleibt in jedem Fall dieselbe: Gibt es sichtbare Bedienelemente für einen einzelnen Zeiger?

Beispiel A: Lageplan

Lageplan der Innenstadt von Lindenau. Die Stadtbücherei liegt an der Ecke Lindenstraße und Bahnhofstraße, gegenüber dem Markt. Der Bahnhof liegt am östlichen Ende der Bahnhofstraße. Westlich der Lindenstraße liegt der Stadtpark, im Süden fließt die Aue.

Zoomstufe 100 %

Zoomen: zwei Finger auf der Karte auseinander- oder zusammenziehen. Verschieben: Karte ziehen. Tastatur: Plus und Minus zoomen, die Pfeiltasten verschieben.

Beispiel B: Lageplan

Lageplan der Innenstadt von Lindenau. Die Stadtbücherei liegt an der Ecke Lindenstraße und Bahnhofstraße, gegenüber dem Markt. Der Bahnhof liegt am östlichen Ende der Bahnhofstraße. Westlich der Lindenstraße liegt der Stadtpark, im Süden fließt die Aue.

Zoomstufe 100 %

Zoomen: zwei Finger auf der Karte auseinander- oder zusammenziehen oder die Schaltflächen benutzen. Verschieben: Karte ziehen oder Pfeil-Schaltflächen. Tastatur: Plus und Minus zoomen, die Pfeiltasten verschieben.

Beispiel C: Karussell

Roman

Nachtzug nach Lindenau

Eine Schaffnerin, ein vergessener Koffer und eine Stadt, die nachts anders aussieht.

Titel 1 von 4

Wischen nach links oder rechts wechselt den Titel, ebenso die beiden Schaltflächen. Tastatur: Pfeil links und Pfeil rechts.

Beispiel D: Karussell

Roman

Nachtzug nach Lindenau

Eine Schaffnerin, ein vergessener Koffer und eine Stadt, die nachts anders aussieht.

Titel 1 von 4

Wischen nach links oder rechts wechselt den Titel. Tastatur: Pfeil links und Pfeil rechts.

Beispiel E: Karussell

Roman

Nachtzug nach Lindenau

Eine Schaffnerin, ein vergessener Koffer und eine Stadt, die nachts anders aussieht.

Titel 1 von 4

Wischen nach links oder rechts wechselt den Titel, ebenso die Punkte unter dem Karussell. Tastatur: Pfeil links und Pfeil rechts.

Auflösung zu 2.5.1
  • Beispiel A – nicht erfüllt. Mit dem Zeiger lässt sich die Karte nur mit zwei Fingern zoomen; es gibt keine Schaltflächen und keinen Doppeltipp. Wer mit einem Finger, einem Mundstab, einer Kopfmaus oder einer gewöhnlichen Maus arbeitet, kommt nicht an die Vergrößerung. Plus und Minus auf der Tastatur helfen bei 2.1.1, zählen hier aber nicht: Gefragt ist ein Weg mit einem einzelnen Zeiger. Verletzt außerdem 2.5.7, weil sich der Ausschnitt mit dem Zeiger nur per Ziehen verschieben lässt.
  • Beispiel B – erfüllt. Dieselbe Karte, dazu Schaltflächen für Vergrößern und Verkleinern: einmal tippen genügt. Die Pfeil-Schaltflächen gehören streng genommen zu 2.5.7 – sie ersetzen das Ziehen.
  • Beispiel C – erfüllt. Wischen ist eine Pfadgeste; „Zurück“ und „Weiter“ erreichen dasselbe mit einem Tipp.
  • Beispiel D – nicht erfüllt. Mit dem Zeiger wechselt der Titel nur durch Wischen. Die Pfeiltasten funktionieren, sobald das Karussell den Fokus hat – das genügt für 2.1.1 (mit Screenreader nur im Fokusmodus), aber nicht für 2.5.1.
  • Beispiel E – erfüllt (Streitfall aus dem Kurs). Die Punkte sind der Weg mit einem einzelnen Zeiger: einmal tippen, der Titel wechselt. Ob die Alternative bequem ist, fragt 2.5.1 nicht. Dass die Punkte nur 10 × 10 CSS-Pixel messen und ihre Mittelpunkte 16 Pixel auseinanderliegen, ist ein eigener Befund unter 2.5.8 – dort nicht erfüllt. Jeder Befund bekommt das Kriterium, das er tatsächlich verletzt.

Automatisch erkennbar? Nein. Kein Werkzeug weiß, welche Gesten ein Skript auswertet. axe meldet in Beispiel E nur die Größe der Punkte (Regel target-size), also 2.5.8.

Grenzfall: Eine freihändige Unterschrift ist eine Pfadgeste, aber der Pfad ist wesentlich – Ausnahme. Der Zwei-Finger-Zoom des Browsers und die Wischgesten von VoiceOver oder TalkBack sind nicht gemeint; geprüft werden nur Gesten, die der Inhalt selbst auswertet. Im Code erkennst du das an Zeiger- oder Touch-Ereignissen (pointerdown, pointermove, touchmove) und an touch-action im CSS.

Verwandte Kriterien: 2.5.7 betrifft Ziehen, bei dem nur Start und Ziel zählen (Karte verschieben, Regler) – bei einer Pfadgeste zählt der Weg oder die Richtung. 2.1.1 verlangt die Tastatur, 2.5.1 den einzelnen Zeiger; eines ersetzt das andere nicht. 2.5.8 bewertet die Größe der Alternative. Läuft ein Karussell von selbst weiter, ist das 2.2.2.

2.5.2 Zeigerabbruch

Stufe A, Hintergrund beim W3C: Understanding 2.5.2 (englisch)

Was sich mit einem einzelnen Zeiger bedienen lässt, löst nicht schon beim Herunterdrücken aus. Spielt das Herunterdrücken doch eine Rolle, muss gelten: Die Funktion wird erst beim Loslassen abgeschlossen und lässt sich vorher abbrechen oder danach rückgängig machen – oder das Loslassen hebt auf, was das Drücken bewirkt hat. Ausnahme: Das Auslösen beim Drücken ist wesentlich.

So prüfst du: Wegzieh-Test – Maustaste oder Finger auf das Bedienelement setzen, gedrückt halten, vom Element wegziehen, loslassen. Ist schon beim Drücken etwas passiert? Dann weiterfragen: Hebt das Loslassen es wieder auf? Lässt es sich rückgängig machen? Ist das Auslösen beim Drücken wesentlich? Im Code: Element untersuchen und im Reiter „Event Listeners“ (Chrome, Edge) oder über die Marke „event“ (Firefox) nach mousedown, pointerdown oder touchstart sehen – das ist ein Anlass zum Testen, noch kein Befund. Am Trackpad ist Wegziehen mühsam; nimm eine Maus oder das Telefon.

Steuerung der Übungsseite – gehört nicht zu den Beispielen. Sie stellt gelöschte Vormerkungen wieder her, damit du den Test wiederholen kannst.

Beispiel A

Vormerkung

Das stille Ufer liegt bis 14. November an der Ausleihe bereit.

Beispiel B

Vormerkung

Nachtzug nach Lindenau liegt bis 15. November an der Ausleihe bereit.

Beispiel C

Vormerkung

Brot backen ohne Eile liegt bis 18. November an der Ausleihe bereit.

Beispiel D

Büchereiausweis

Ausweisnummer: verborgen

Die Nummer ist zu sehen, solange du die Schaltfläche gedrückt hältst. Mit der Tastatur schaltet sie um.

Beispiel E

Steuerung der Übungsseite – gehört nicht zum Beispiel. Ohne Ton leuchtet die Taste nur auf.

Musikbibliothek: Klavier zum Ausprobieren

Zuletzt gespielt: noch nichts

Auflösung zu 2.5.2
  • Beispiel A – erfüllt. Eine gewöhnliche Schaltfläche mit click: Sie löst erst beim Loslassen aus. Wer wegzieht und außerhalb loslässt, bricht ab.
  • Beispiel B – nicht erfüllt. Die Vormerkung ist schon gelöscht, wenn der Finger die Schaltfläche berührt (pointerdown). Wegziehen hilft nicht, das Loslassen stellt nichts wieder her, ein Rückgängig gibt es im Beispiel nicht, und wesentlich ist das frühe Auslösen auch nicht. Das trifft Menschen, die mit Zittern oder eingeschränkter Feinmotorik danebentippen – und am Telefon alle, die an dieser Stelle nur scrollen wollten.
  • Beispiel C – erfüllt. Die Werkzeuge zeigen einen pointerdown-Listener, er färbt die Schaltfläche aber nur ein. Gelöscht wird beim click, also beim Loslassen. Entscheidend ist das Verhalten im Wegzieh-Test, nicht der Listener.
  • Beispiel D – erfüllt. Hier bewirkt das Herunterdrücken etwas – aber das Loslassen hebt es wieder auf (Umkehr). So arbeiten auch Vorschauen, die nur beim Halten erscheinen.
  • Beispiel E – erfüllt (Ausnahme „wesentlich“). Eine Klaviertaste, die erst beim Loslassen klingt, wäre kein Klavier mehr. Dasselbe gilt für Bildschirmtastaturen: Funktionen, die einen Tastendruck nachbilden, gelten als wesentlich.

Die Schaltflächen „Beispiele A bis C zurücksetzen“ und „Ton für Beispiel E“ gehören zur Übungsseite, nicht zu den Beispielen – sie zählen nicht als Rückgängig-Funktion.

Automatisch erkennbar? Nein. axe meldet in diesen Beispielen nichts (nachgeprüft); auch WAVE und Lighthouse haben für dieses Kriterium keine Prüfung. Ob ein Listener etwas auslöst oder nur einfärbt, zeigt nur der Test von Hand.

Grenzfall: Drag and Drop beginnt beim Herunterdrücken und ist trotzdem erlaubt, wenn die Aktion erst beim Loslassen abgeschlossen wird und sich abbrechen lässt – etwa durch Loslassen außerhalb des Ziels (so machen es die Listen bei 2.5.7) – oder danach rückgängig machen lässt. Löst etwas beim Herunterdrücken aus, lässt sich aber rückgängig machen, wertet der Kurs das nicht als Befund; so beschreibt es auch die Failure F101 des W3C. Der Normtext nennt das Rückgängigmachen allerdings nur zusammen mit dem Abschluss beim Loslassen – empfiehl deshalb in jedem Fall, erst beim Loslassen auszulösen.

Stolperstelle: Auch pointerup oder mouseup kann durchfallen – wenn die Funktion beim Loslassen an beliebiger Stelle auslöst, gibt es keinen Abbruch. Gewöhnliche Schaltflächen und Links machen es von selbst richtig; Probleme entstehen fast nur bei eigenen Skripten.

Verwandte Kriterien: 2.5.7 verlangt für Ziehbewegungen einen Weg ohne Ziehen. 2.1.1: Ein Bedienelement, das nur auf Zeiger-Ereignisse hört, ist mit der Tastatur nicht bedienbar – in Beispiel B, D und E funktionieren Eingabetaste und Leertaste. 3.3.4 verlangt bei rechtlich oder finanziell bindenden Eingaben zusätzlich Prüfen, Korrigieren oder Rückgängigmachen.

2.5.3 Beschriftung (Label) im Namen

Stufe A, Hintergrund beim W3C: Understanding 2.5.3 (englisch)

Trägt ein Bedienelement eine sichtbare Beschriftung aus Text, dann steckt dieser Text auch in seinem zugänglichen Namen – am besten gleich am Anfang. Sonst läuft der Sprachbefehl „Klick auf Senden“ ins Leere, obwohl „Senden“ auf der Schaltfläche steht.

So prüfst du: Element untersuchen (Strg + Umschalt + C, am Mac Cmd + Umschalt + C) und im Reiter „Barrierefreiheit“ (Chrome, Edge, Firefox) den Namen ablesen; Safari zeigt ihn in der Seitenleiste des Element-Bereichs bei den Angaben zur Barrierefreiheit. Dann vergleichen: Kommt der sichtbare Text Wort für Wort im Namen vor? Groß- und Kleinschreibung und Satzzeichen zählen nicht. Ohne Entwicklerwerkzeuge: Namen mit dem Screenreader abhören. Mit Sprachsteuerung (Windows 11: Sprachzugriff, macOS: Sprachsteuerung): den sichtbaren Text als Befehl sprechen.

Beispiel A: Stellen 1 bis 5

Frage an die Stadtbücherei
Stelle 1
Stelle 2
Stelle 3
Stelle 4 Stelle 5 Hilfe

Wir antworten in der Regel innerhalb von zwei Werktagen. Anhänge dürfen höchstens 5 MB groß sein.

Die Zahlen stehen links neben der jeweiligen Stelle. Die Übungsseite sendet nichts ab; sie meldet nur, was ausgelöst wurde.

Beispiel B: Stellen 6 bis 8

Katalog
Stelle 6
Rundbrief
Stelle 7 Stelle 8

Auflösung zu 2.5.3
Stellen 1 bis 8: sichtbarer Text, zugänglicher Name, Urteil und Sprachbefehl
StelleSichtbarer TextZugänglicher NameUrteilBefehl mit dem sichtbaren Text (erwartet)
1BetreffBetrefferfüllttrifft
2AnhängenDatei anhängenerfüllt, mit Empfehlungunsicher, je nach Sprachsteuerung
3Rückruf erwünschtRückruf erwünschterfüllttrifft
4SendenFormular abschickennicht erfüllttrifft nicht
5HilfeHilfeerfüllttrifft
6keiner (Lupe)Suchennicht anwendbarkein sichtbarer Text zum Sprechen
7SendenFormular absendennicht erfüllt (Kursposition)trifft voraussichtlich nicht
8AbmeldenAbmelden vom Rundbrieferfüllttrifft in der Regel
  • Stellen 1, 3 und 5 – erfüllt. Der Name ist Wort für Wort der sichtbare Text: bei Feld und Kontrollkästchen aus dem verknüpften label, beim Link aus seinem Inhalt. Das sind die drei passenden Stellen der Übung.
  • Stelle 2 – erfüllt, mit Empfehlung. aria-label="Datei anhängen" ersetzt den sichtbaren Text „Anhängen“, enthält ihn aber als ganzes Wort. Das Kriterium verlangt nur „enthält“. Im Bericht: erfüllt; Empfehlung, den sichtbaren Text an den Anfang des Namens zu stellen, weil manche Sprachsteuerungen dort suchen. Das ist die Zusatzstufe der Übung und derselbe Fall wie „In den Warenkorb“ im Streitfall.
  • Stelle 4 – nicht erfüllt. aria-label="Formular abschicken" überschreibt „Senden“ vollständig; das sichtbare Wort kommt im Namen nicht vor. Wer „Klick auf Senden“ sagt, trifft nichts und muss auf Nummern ausweichen. Screenreader-Nutzende mit Sehrest hören etwas anderes, als sie sehen. Das ist die häufigste Ursache.
  • Stelle 6 – nicht anwendbar. Die Schaltfläche zeigt nur ein Symbol und keinen Text; 2.5.3 greift nicht. Einen sinnvollen Namen braucht sie trotzdem (1.1.1, 4.1.2) – „Suchen“ ist ein Wort, das man auch ohne Beschriftung errät.
  • Stelle 7 – nicht erfüllt (Grenzfall, Kursposition). „Senden“ steckt in „absenden“ nur als Teil eines anderen Wortes. Sprachsteuerung arbeitet mit Wörtern, nicht mit Wortteilen; der Kurs wertet das deshalb als nicht erfüllt. Die ACT-Regel des W3C zu diesem Kriterium („Visible label is part of accessible name“) und axe vergleichen dagegen Zeichenfolgen und lassen den Fall durchgehen – manche Prüfende werten deshalb „erfüllt“. Nenne im Bericht deine Begründung und prüfe es mit der Sprachsteuerung deines Systems nach.
  • Stelle 8 – erfüllt. Der Name „Abmelden vom Rundbrief“ beginnt mit dem sichtbaren Text und ergänzt ihn – so soll ein erweiterter Name aussehen. Vergleiche mit Stelle 2.

Die Spalte „Befehl“ nennt das erwartete Ergebnis. Sprachsteuerungen gehen mit Teiltreffern unterschiedlich um – probiere die Befehle auf deinem System aus.

Automatisch erkennbar? Teilweise. axe hat dafür die Regel label-content-name-mismatch; sie ist als experimentell markiert und läuft in der Standardeinstellung nicht mit – auf dieser Seite meldet axe deshalb nichts. Schaltet man die Regel ein (geprüft mit axe-core 4.13), meldet sie nur Stelle 4. Stelle 7 lässt sie durchgehen, weil sie Zeichenfolgen vergleicht und „senden“ in „absenden“ findet; die Stellen 2 und 8 erkennt sie als erfüllt. Verlass dich auf den Vergleich im Barrierefreiheitsbaum.

Grenzfall: Der Name darf mehr enthalten als der sichtbare Text, etwa um zwanzig gleiche Schaltflächen zu unterscheiden („Anmelden: Lesung am 12. November“). Er muss ihn nicht wiederholen, wo keiner steht. Mathematische Zeichen und Formeln gelten als Text und gehören unverändert in den Namen. Zeichen, die nur als Symbol stehen, gelten dagegen nicht als Beschriftung: Die Schaltflächen „+“, „−“ und die Pfeile bei 2.5.1 und 2.5.7 heißen „Vergrößern“, „Verkleinern“, „… nach oben“ – kein Fall für 2.5.3, auch wenn axe solche Stellen mit eingeschalteter Regel als „zu prüfen“ einstuft.

Verwandte Kriterien: Ob es überhaupt einen Namen gibt, prüft 4.1.2; ob die Beschriftung aussagekräftig ist, 2.4.6; ob Felder überhaupt beschriftet sind, 3.3.2. 2.5.3 prüft nur die Übereinstimmung von Gesehenem und Namen.

2.5.4 Bewegungsaktivierung

Stufe A, Hintergrund beim W3C: Understanding 2.5.4 (englisch)

Was sich durch Bewegen des Geräts oder durch Bewegung vor der Kamera auslösen lässt – Schütteln, Neigen, Winken –, muss auch über ein gewöhnliches Bedienelement gehen. Außerdem muss sich die Reaktion auf die Bewegung abschalten lassen, damit nichts aus Versehen auslöst. Beides ist nötig.

So prüfst du: Am Smartphone (die Seite muss über https geladen sein): Beispiel starten, die Erlaubnis für die Bewegungssensoren geben, dann schütteln oder das Gerät im Hochformat nach links und rechts neigen. Zwei Fragen: Gibt es für dieselbe Funktion ein Bedienelement? Lässt sich die Reaktion auf Bewegung abschalten? Passiert nichts, sieh zuerst nach, ob in der Steuerung über dem Beispiel steht, dass Bewegungsdaten ankommen. Ohne Smartphone: Chrome oder Edge, Entwicklerwerkzeuge, Menü mit den drei Punkten → „Weitere Tools“ → „Sensoren“. Stelle dort unter „Ausrichtung“ (englisch „Orientation“) eine eigene Ausrichtung ein und setze den Wert γ (Gamma) auf 40, zurück auf 0 und auf −40 – das ist Neigen (Beispiele C und D). Schütteln lässt sich dort nicht nachstellen: Für A und B suchst du im Skript nach devicemotion oder arbeitest im Tandem. Safari am Mac hat keinen Sensoren-Bereich.

Beispiel A: Schütteln

Steuerung der Übungsseite – gehört nicht zum Beispiel. Der Start schaltet den Bewegungssensor für dieses Beispiel ein; iPhone und iPad fragen dabei nach einer Erlaubnis. Sensor: aus.

Medien suchen

Tipp: Gerät schütteln leert das Formular.

Beispiel B: Schütteln

Steuerung der Übungsseite – gehört nicht zum Beispiel. Der Start schaltet den Bewegungssensor für dieses Beispiel ein; iPhone und iPad fragen dabei nach einer Erlaubnis. Sensor: aus.

Medien suchen

Tipp: Gerät schütteln leert das Formular.

Beispiel C: Neigen

Steuerung der Übungsseite – gehört nicht zum Beispiel. Der Start schaltet den Bewegungssensor für dieses Beispiel ein; iPhone und iPad fragen dabei nach einer Erlaubnis. Sensor: aus.

Neu im Regal

Roman

Nachtzug nach Lindenau

Tipp: Gerät nach rechts neigen blättert weiter, nach links zurück.

Titel 1 von 4

Beispiel D: Neigen

Steuerung der Übungsseite – gehört nicht zum Beispiel. Der Start schaltet den Bewegungssensor für dieses Beispiel ein; iPhone und iPad fragen dabei nach einer Erlaubnis. Sensor: aus.

Neu im Regal

Roman

Nachtzug nach Lindenau

Tipp: Gerät nach rechts neigen blättert weiter, nach links zurück.

Titel 1 von 4

Auflösung zu 2.5.4
  • Beispiel A – erfüllt. Schütteln leert das Formular, die Schaltfläche „Formular leeren“ tut dasselbe, und das Kontrollkästchen „Auf Schütteln reagieren“ schaltet die Bewegung ab.
  • Beispiel B – nicht erfüllt. Die Reaktion auf das Schütteln lässt sich nicht abschalten (Failure F106) – das genügt für das Urteil: Wer zittert oder im Bus sitzt, leert das Formular aus Versehen. Außerdem fehlt eine Schaltfläche, die das Formular in einem Schritt leert; wessen Telefon fest am Rollstuhl montiert ist, muss jedes Feld einzeln von Hand leeren. Ob das Leeren von Hand als Bedienelement für dieselbe Funktion zählt, ist strittig. Mit der Tastatur geht es auf demselben Weg – 2.1.1 werten wir deshalb nicht als verletzt.
  • Beispiel C – nicht erfüllt. „Zurück“ und „Weiter“ sind da – die erste Bedingung stimmt. Aber die Reaktion auf das Neigen lässt sich nicht abschalten (Failure F106). Wer das Gerät nicht ruhig halten kann, blättert ständig ungewollt.
  • Beispiel D – erfüllt. Schaltflächen und das Kontrollkästchen „Auf Neigen reagieren“: beide Bedingungen stimmen.

Die Schaltflächen zum Starten und Stoppen gehören zur Übungsseite und zählen nicht als Abschalter des Beispiels. Die Sensoren laufen hier erst nach dem Start, damit beim Lesen der Seite nichts von selbst auslöst.

Automatisch erkennbar? Nein. axe meldet in diesen Beispielen nichts (nachgeprüft); auch WAVE und Lighthouse haben für dieses Kriterium keine Prüfung. Ein Hinweis im Code sind Listener für devicemotion und deviceorientation; unter iOS zusätzlich der Aufruf DeviceMotionEvent.requestPermission().

Grenzfall: „Schütteln zum Widerrufen“ unter iOS ist eine Funktion des Systems, kein Inhalt der Website – nicht prüfen. Zeigt eine Seite im Querformat ein anderes Layout, reagiert sie auf die Ausrichtung, nicht auf Bewegung als Bedienung; das ist 1.3.4. Ausgenommen sind Funktionen, für die die Bewegung wesentlich ist (Schrittzähler, Wasserwaage), und Bewegung, die über eine unterstützte Schnittstelle der Barrierefreiheit läuft. Laut W3C kann es auch genügen, wenn die Anwendung eine Systemeinstellung beachtet, mit der Nutzende die Bewegungserkennung abschalten; stütze ein Urteil darauf nur, wenn du die Einstellung auf dem Prüfgerät gefunden und ausprobiert hast.

Verwandte Kriterien: 1.3.4 (Hoch- und Querformat), 2.5.1 (Gesten auf dem Bildschirm statt Bewegung des Geräts), 2.1.1 (dieselbe Funktion per Tastatur – eine Schaltfläche wie in Beispiel A erfüllt beides).

2.5.7 Ziehende Bewegungen

Stufe AA, neu seit WCAG 2.2, Hintergrund beim W3C: Understanding 2.5.7 (englisch)

Alles, was sich durch Ziehen bedienen lässt – Regler, sortierbare Listen, verschiebbare Karten, Drag and Drop –, muss auch mit einem einzelnen Zeiger ohne Ziehen gehen: durch Tippen oder Klicken. Ausgenommen ist Ziehen, das wesentlich ist, und Ziehen, das der Browser selbst bereitstellt.

So prüfst du: Mit Maus oder Finger: Was lässt sich ziehen? Für jede dieser Funktionen fragen: Komme ich mit einzelnen Klicks oder Tipps zum selben Ergebnis – Klick auf die Leiste, Schaltflächen, ein Menü „Verschieben nach …“? Die Tastatur legst du dafür beiseite; sie zählt hier nicht. Am Telefon zusätzlich prüfen, ob die Alternative ohne Hover erreichbar ist. Windows und Mac unterscheiden sich nicht.

Beispiel A: Regler

Gruppenraum reservieren

Dauer der Reservierung

Gewählt: 2 Stunden

Griff ziehen. Tastatur: Pfeiltasten, Pos1 und Ende.

Beispiel B: Regler

Gruppenraum reservieren

Dauer der Reservierung

Gewählt: 2 Stunden

Griff ziehen, auf die Leiste tippen oder die Schaltflächen benutzen. Tastatur: Pfeiltasten, Pos1 und Ende.

Beispiel C: Liste

Merkliste ordnen
  1. Nachtzug nach Lindenau
  2. Das stille Ufer
  3. Brot backen ohne Eile
  4. Der kleine Sternenatlas

Reihenfolge ändern: Eintrag am Griff ziehen oder die Pfeil-Schaltflächen benutzen. Loslassen außerhalb des Kastens oder die Taste Esc bricht das Ziehen ab. Tastatur: Griff fokussieren, dann Pfeil hoch oder Pfeil runter.

Beispiel D: Liste

Merkliste ordnen
  1. Nachtzug nach Lindenau
  2. Das stille Ufer
  3. Brot backen ohne Eile
  4. Der kleine Sternenatlas

Reihenfolge ändern: Eintrag am Griff ziehen. Loslassen außerhalb des Kastens oder die Taste Esc bricht das Ziehen ab. Tastatur: Griff fokussieren, dann Pfeil hoch oder Pfeil runter.

Beispiel E: Lageplan

Lageplan der Innenstadt von Lindenau. Die Stadtbücherei liegt an der Ecke Lindenstraße und Bahnhofstraße, gegenüber dem Markt. Der Bahnhof liegt am östlichen Ende der Bahnhofstraße. Westlich der Lindenstraße liegt der Stadtpark, im Süden fließt die Aue.

Zoomstufe 100 %

Zoomen: Schaltflächen oder zwei Finger. Verschieben: Karte ziehen. Tastatur: Plus und Minus zoomen, die Pfeiltasten verschieben.

Auflösung zu 2.5.7
  • Beispiel A – nicht erfüllt. Mit dem Zeiger lässt sich die Dauer nur einstellen, indem man den Griff zieht; ein Klick auf die Leiste bewirkt nichts. Die Pfeiltasten funktionieren – das erfüllt 2.1.1, hilft aber niemandem mit Kopfmaus, Mundstab, Augensteuerung oder einem Touchscreen ohne Tastatur. So ist auch der Streitfall „Regler mit Pfeiltasten“ aus dem Kurs zu werten.
  • Beispiel B – erfüllt. Ein Tipp auf die Leiste setzt den Griff an diese Stelle, „Kürzer“ und „Länger“ ändern den Wert schrittweise. Ziehen geht weiterhin.
  • Beispiel C – erfüllt. Jeder Eintrag hat Schaltflächen „nach oben“ und „nach unten“. Ein Tipp verschiebt um einen Platz; Ziehen bleibt als zweiter Weg.
  • Beispiel D – nicht erfüllt. Die Reihenfolge lässt sich mit dem Zeiger nur durch Ziehen am Griff ändern. Die Tastaturbedienung am Griff (Pfeil hoch, Pfeil runter) ersetzt die Zeiger-Alternative nicht; mit einem Screenreader funktioniert sie zudem nur im Fokusmodus.
  • Beispiel E – nicht erfüllt (Grenzfall zu 2.5.1). Plus und Minus ersetzen den Zwei-Finger-Zoom – 2.5.1 ist erfüllt. Den Ausschnitt verschiebt man mit dem Zeiger aber nur durch Ziehen; Pfeil-Schaltflächen fehlen. Erfüllt wäre es auch, wenn eine Suche oder eine Liste zum selben Ausschnitt führte. Vergleiche mit Beispiel B bei 2.5.1.

Automatisch erkennbar? Nein. axe meldet in diesen Beispielen nichts (nachgeprüft); auch WAVE und Lighthouse haben für dieses Kriterium keine Prüfung. Kein Werkzeug weiß, was ein Skript beim Ziehen tut.

Grenzfall: Das Eingabefeld input type="range" des Browsers lässt sich meist durch Tippen auf die Leiste setzen; selbst gebaute Regler oft nicht. Das Scrollen der Seite oder eines Bereichs ist nicht gemeint – das stellt der Browser bereit. „Wesentlich“ heißt, dass das Ziehen selbst die Funktion ist (Freihandzeichnen, Unterschrift), nicht, dass die Funktion unwichtig wäre.

Verwandte Kriterien: 2.5.1: Beim Ziehen zählen nur Start und Ziel, bei einer Pfadgeste (Wischen in eine Richtung) der Weg. 2.1.1 verlangt die Tastatur – sie ist zusätzlich nötig, ersetzt die Zeiger-Alternative aber nicht. 2.5.2: Ziehen beginnt beim Herunterdrücken und ist erlaubt, solange erst das Loslassen abschließt und sich das Ziehen abbrechen lässt – in den Listen durch Loslassen außerhalb des Kastens oder mit Esc. 2.5.8 gilt auch für die Alternativ-Schaltflächen.

2.5.8 Zielgröße (Minimum)

Stufe AA, neu seit WCAG 2.2, Hintergrund beim W3C: Understanding 2.5.8 (englisch)

Ein Ziel für Maus oder Finger ist mindestens 24 × 24 CSS-Pixel groß. Ist es kleiner, braucht es Abstand: Ein Kreis von 24 Pixel Durchmesser um seine Mitte darf kein anderes Ziel und keinen solchen Kreis eines anderen zu kleinen Ziels schneiden. Ausgenommen sind Ziele im Fließtext, Ziele mit gleichwertiger größerer Alternative auf derselben Seite, unveränderte Bedienelemente des Browsers und wesentliche Darstellungen.

So prüfst du: Browser-Zoom auf 100 %. Element untersuchen (Strg + Umschalt + C, am Mac Cmd + Umschalt + C) und die Maus auf das Ziel legen: Die Einblendung zeigt Breite × Höhe in CSS-Pixeln. Für die Lage das Element auswählen und in der Konsole $0.getBoundingClientRect() eingeben – du bekommst x, y, width und height; der Mittelpunkt ist x plus halbe Breite und y plus halbe Höhe. Das geht in Chrome, Edge, Firefox und Safari gleich. Abstand und Ausnahmen prüfst du erst, wenn ein Maß unter 24 liegt. Es zählt die klickbare Fläche, nicht das sichtbare Symbol. Screenshots taugen nicht zum Messen.

Beispiel A: Ziele 1 bis 5

Meine Merkliste
Ziel 2

Jeden Titel kannst du zweimal verlängern. Einzelheiten stehen in der Ziel 4Hausordnung der Stadtbücherei.

Ziel 5
  • Nachtzug nach Lindenau Ziel 3
  • Das stille Ufer
Ziel 1

Aus der Hausordnung, § 6: Die Leihfrist beträgt vier Wochen und kann zweimal verlängert werden, solange niemand den Titel vorgemerkt hat.

Die Zahl steht jeweils links neben ihrem Ziel. Die Zahlen selbst sind keine Bedienelemente.

Beispiel B: Ziele 6 bis 8

Suchergebnis: 2 Treffer
Ansicht: Ziel 6
  • Brot backen ohne Eile Ziel 7
  • Der kleine Sternenatlas
Ziel 8

Die Zahl steht jeweils links neben ihrem Ziel; Ziel 6 ist das erste der drei Symbole.

Auflösung zu 2.5.8

Gemessen mit getBoundingClientRect() in Chromium bei 100 % Zoom, in fünf Schriften und bei Fensterbreiten von 320 bis 1600 Pixel. Die Maße der Schaltflächen und Symbole stehen im CSS und sind überall gleich. Von Schrift und Fensterbreite hängen nur zwei Angaben ab – die Größe des Links (Ziel 4) und die Entfernung zum nächsten Ziel bei Ziel 2; dort stehen Spannen. Kein Urteil hängt davon ab.

Ziele 1 bis 8: Maß, Abstand und Urteil
ZielMaß (Breite × Höhe)AbstandUrteil
1 „Alle verlängern“156 × 36nicht nötigerfüllt
2 Hinweis-Symbol20 × 20nächstes Ziel je nach Fensterbreite und Schrift 50 bis 140 Pixel von der Mitte entfernterfüllt (Abstand)
3 Symbol „verlängern“20 × 20Mittelpunkte 22 Pixel auseinandernicht erfüllt
4 Link „Hausordnung“85 bis 115 × 16 bis 21, je nach Schriftnicht nötigerfüllt (Ausnahme: im Fließtext)
5 Drucker-Symbol16 × 16von der Mitte bis zum Rand von „Sortieren“ 10 Pixelerfüllt (Ausnahme: gleichwertig)
6 Symbole „Ansicht“20 × 20Mittelpunkte 28 Pixel auseinandererfüllt (Abstand)
7 Lesezeichen28 × 28nicht nötigerfüllt
8 Kontrollkästchen13 × 13nicht nötigerfüllt (Ausnahme: vom Browser bestimmt)
  • Ziel 1 – erfüllt. Gemessen: 156 × 36 CSS-Pixel, klar über 24 (Mindestbreite und Höhe stehen im CSS). Für den Bericht: Die Höhe liegt unter 44; wer gestaltet, plant mit 44 × 44 (2.5.5 Zielgröße (Erweitert), Stufe AAA, und die Empfehlung der Plattformen) – im Bericht eine Empfehlung, kein Mangel. Die Schaltfläche „Merkliste drucken“ daneben erreicht mit 180 × 44 die 44 in der Höhe.
  • Ziel 2 – erfüllt über den Abstand. Mit 20 × 20 ist das Ziel zu klein. Der 24-Pixel-Kreis um die Mitte reicht aber nur 2 Pixel über den Rand hinaus, und kein anderes Ziel liegt in der Nähe: Bis zum nächsten sind es von der Mitte aus je nach Fensterbreite und Schrift 50 bis 140 Pixel, weit mehr als 12.
  • Ziel 3 – nicht erfüllt. Das Ziel misst 20 × 20, und der Nachbar „entfernen“ beginnt 2 Pixel daneben: Die Mittelpunkte liegen 22 Pixel auseinander – weniger als 24, also schneiden sich die Kreise der beiden zu kleinen Ziele. Eine Ausnahme greift nicht: kein Fließtext, keine größere Alternative, kein Bedienelement des Browsers. Wer zittert oder dicke Finger hat, entfernt einen Titel, den er verlängern wollte. Dasselbe gilt für das Nachbarziel und das Paar in der zweiten Zeile.
  • Ziel 4 – erfüllt (Ausnahme „im Fließtext“). Der Link ist je nach Schrift 16 bis 21 Pixel hoch und 85 bis 115 breit (hier gemessen: 16 bis 19 hoch; mit Segoe UI unter Windows rechnerisch rund 21) – in jedem Fall niedriger als 24. Er steht aber in einem Satz; seine Höhe ist durch die Zeilenhöhe des umgebenden Textes begrenzt (24,8 Pixel je Zeile). Abstand musst du nicht prüfen.
  • Ziel 5 – erfüllt (Ausnahme „gleichwertig“). Das Symbol misst 16 × 16, und „Sortieren“ beginnt 2 Pixel daneben – der Kreis mit Radius 12 schneidet das Nachbarziel (von der Mitte bis zum Rand von „Sortieren“ 10 Pixel). Für sich genommen wäre das nicht erfüllt. Dieselbe Funktion gibt es aber auf derselben Seite groß genug: die Schaltfläche „Merkliste drucken“ (180 × 44). „Sortieren“ selbst ist 104 × 36 groß und braucht keinen Abstand.
  • Ziel 6 – erfüllt über den Abstand. Drei Symbole je 20 × 20, Mittelpunkte 28 Pixel auseinander. Die Kreise (Radius 12) schneiden sich nicht, und von der Mitte bis zum Rand des Nachbarn sind es 18 Pixel, mehr als 12. Lägen die Mittelpunkte nur 22 Pixel auseinander wie bei Ziel 3, wäre es nicht erfüllt.
  • Ziel 7 – erfüllt. Das sichtbare Lesezeichen ist nur 12 Pixel groß, die Schaltfläche darum aber 28 × 28: Der Innenabstand zählt zur klickbaren Fläche.
  • Ziel 8 – erfüllt (Ausnahme „vom Browser bestimmt“). Das Kästchen misst in Chrome und Edge 13 × 13 (andere Browser können um ein, zwei Pixel abweichen); diese Größe gibt der Browser vor, und die Seite hat sie nicht verändert. Zusätzlich vergrößert die verknüpfte Beschriftung die klickbare Fläche. Sobald die Seite das Kästchen per CSS umgestaltet, gilt die Regel wieder.

Zusatzstufe 320 Pixel: Das Urteil ändert sich bei keinem Ziel. Die Maße der Schaltflächen und Symbole und die Abstände in den Paaren (2 Pixel) und im Dreierblock (8 Pixel) sind in CSS-Pixeln festgelegt und bleiben gleich; nachgemessen bei acht Fensterbreiten von 320 bis 1600 Pixel. Es ändert sich nur die Lage der Ziele. Verlass dich trotzdem nicht darauf – auf echten Seiten schrumpfen Abstände in der schmalen Ansicht oft.

Automatisch erkennbar? Teilweise. axe prüft die Größe und den Abstand mit der Regel target-size. Auf dieser Seite meldet axe in Beispiel A die vier Symbole in den Listenzeilen (Ziel 3 mit Nachbar, beide Zeilen) und das Drucker-Symbol (Ziel 5); zu den Zielen 2, 6, 7 und 8 meldet es nichts. Die Meldung zu Ziel 5 zeigt die Grenze: Die Ausnahme „gleichwertig“ kennt das Werkzeug nicht, sie muss ein Mensch bewerten. Auch den Link im Fließtext (Ziel 4) meldet axe nicht.

Grenzfall: Die Abstandsregel heißt nicht „24 Pixel zwischen den Rändern“ – das wäre zu streng. Es geht um den Kreis um die Mitte des zu kleinen Ziels. Eine Linkliste, die nur wie Fließtext aussieht, fällt nicht unter die Ausnahme „im Fließtext“. Kartenpunkte in genauer Lage können als wesentlich gelten. Bei knapper Erfüllung im Bericht eine Empfehlung Richtung 44 × 44 aussprechen.

Verwandte Kriterien: 2.5.5 Zielgröße (Erweitert) verlangt 44 × 44 und gehört zur Stufe AAA – nicht Prüfstandard dieses Kurses. 2.5.1: Die winzigen Punkte am Karussell (dort Beispiel E) sind ein Befund für 2.5.8, nicht für 2.5.1. 1.4.11 fragt, ob man das Symbol erkennt, 4.1.2, ob es einen Namen hat.

Prinzip 3: Verständlich

3.1.1 Sprache der Seite

Stufe A, Hintergrund beim W3C: Understanding 3.1.1 (englisch)

Die Hauptsprache jeder Seite muss für Programme erkennbar sein. In HTML steht sie im Attribut lang am html-Element – und sie muss zur Sprache passen, in der die Seite tatsächlich geschrieben ist.

So prüfst du: Öffne die Seite, dann Rechtsklick → „Untersuchen“ und sieh dir ganz oben das Element html an. Ohne Entwicklerwerkzeuge: Seitenquelltext anzeigen (Strg + U, am Mac Cmd + Wahltaste + U) und nach lang= suchen. Dann die Hörprobe: Lass dir mit NVDA, der Windows-Sprachausgabe oder VoiceOver die ersten Zeilen vorlesen – klingt die Aussprache deutsch? Zum Schluss WAVE, axe oder Lighthouse über jede der drei Seiten laufen lassen und mit deinem eigenen Befund vergleichen.

Auflösung zu 3.1.1
  • Beispiel A – nicht erfüllt. Am html-Element steht lang="en", der Inhalt ist aber deutsch. Die Angabe ist vorhanden und gültig, nur eben die verkehrte. Ein Screenreader, der die Stimme nach der Sprachangabe wählt, liest den deutschen Text mit englischer Aussprache – das ist kaum zu verstehen. Auch Übersetzungshilfen, Silbentrennung und Rechtschreibprüfung im Browser gehen von Englisch aus. Du merkst es an der Hörprobe und am Blick auf das html-Element.
  • Beispiel B – erfüllt. lang="de" am html-Element, der Inhalt ist deutsch. Die Seite stammt aus der Beispielsite „Eins“; dort tragen alle zehn Seiten diese Angabe. In der Beispielsite „Zwei“ hat außer der Seite „Ausleihe“ (Beispiel A) keine Seite ein lang.
  • Beispiel C – nicht erfüllt. Das html-Element hat gar kein lang. Der Screenreader nimmt dann seine Standardstimme. Auf einem deutsch eingestellten Rechner klingt das zufällig passend – deshalb fällt der Mangel in der Hörprobe oft nicht auf. Auf einem Gerät mit anderer Standardsprache wird der Text mit der unpassenden Stimme gelesen. Programmatisch bestimmbar ist die Sprache in keinem Fall.

Automatisch erkennbar? Teilweise. Ein fehlendes lang (Beispiel C) melden axe (Regel html-has-lang), WAVE und Lighthouse als Fehler, ebenso einen ungültigen Wert wie lang="deutsch" (axe: html-lang-valid). Zu Beispiel A meldet axe bei diesem Kriterium nichts: en ist ein gültiger Sprachcode, und ob er zum Text passt, prüfen die Werkzeuge nicht. Genau deshalb gehört der Blick ins html-Element zu jeder Prüfung. Auf den Seiten von Beispiel A und C melden die Werkzeuge daneben vieles andere (Kontraste, Bilder ohne Alternativtext, eine Auswahlliste ohne Namen) – das gehört zu anderen Kriterien. Zu Beispiel B meldet axe gar nichts.

Grenzfall: lang="de" und lang="de-DE" sind beide gültig und erfüllen das Kriterium. Bei einer Seite mit mehreren Sprachen gilt als Hauptsprache die, in der der überwiegende Teil geschrieben ist; die übrigen Passagen sind Sache von 3.1.2.

Verwandte Kriterien: 3.1.2 betrifft einzelne Passagen in anderer Sprache, 3.1.1 nur die Angabe für die ganze Seite. Dieselbe Frage stellt sich bei PDF- und Office-Dokumenten (Dokumentsprache).

3.1.2 Sprache von Teilen

Stufe AA, Hintergrund beim W3C: Understanding 3.1.2 (englisch)

Wechselt der Text in eine andere Sprache, muss diese Passage für Programme als anderssprachig erkennbar sein – in HTML mit lang am umschließenden Element. Ausgenommen sind Eigennamen, Fachbegriffe, Wörter unbestimmter Sprache und Wörter, die Teil der umgebenden Sprache geworden sind.

So prüfst du: Suche die Stellen, an denen der Text die Sprache wechselt: Zitate, Titel, Links eines Sprachwählers, ganze Absätze. Untersuche jede Stelle (Rechtsklick → „Untersuchen“): Trägt das Element oder ein umschließendes Element ein passendes lang? Ohne Entwicklerwerkzeuge: Seitenquelltext anzeigen (Strg + U, am Mac Cmd + Wahltaste + U) und nach lang= suchen. Geprüft wird im Code; der Screenreader bestätigt nur: NVDA und VoiceOver wechseln bei lang die Stimme, die Windows-Sprachausgabe je nach installierten Stimmen.

Beispiel A

Neu in der Fremdsprachenabteilung

Diesen Monat neu im Regal: der Roman Seven Winters at Marrow Bay und der Krimi Le facteur de la rue des Tilleuls.

Der englische Lesekreis trifft sich an jedem ersten Dienstag im Monat. Sein Motto:

“A book is a door you can walk through twice.”

Kurzinfo in anderen Sprachen:

Welcome! A library card is free if you are under 18. Please ask at the front desk.

Bienvenue ! La carte de lecteur est gratuite pour les moins de 18 ans. Adressez-vous à l’accueil.

Hoş geldiniz! 18 yaşından küçükler için kütüphane kartı ücretsizdir. Lütfen danışmaya başvurun.

Beispiel B

Neu in der Fremdsprachenabteilung

Diesen Monat neu im Regal: der Roman Seven Winters at Marrow Bay und der Krimi Le facteur de la rue des Tilleuls.

Der englische Lesekreis trifft sich an jedem ersten Dienstag im Monat. Sein Motto:

“A book is a door you can walk through twice.”

Kurzinfo in anderen Sprachen:

Welcome! A library card is free if you are under 18. Please ask at the front desk.

Bienvenue ! La carte de lecteur est gratuite pour les moins de 18 ans. Adressez-vous à l’accueil.

Hoş geldiniz! 18 yaşından küçükler için kütüphane kartı ücretsizdir. Lütfen danışmaya başvurun.

Beispiel C

Aus dem Lesecafé

Das Team im Lesecafé Chez Louise freut sich über euer Feedback. Am 12. März liest dort Harriet Whitcombe aus ihrem neuen Roman, der Eintritt ist frei.

Im Anschluss erklärt die Hochschulbibliothek, was Open Access und Peer-Review für eure Abschlussarbeit bedeuten. Alle Termine stehen im Newsletter und nach dem Login im Online-Konto.

Beispiel D

Aus der Bibliothek der Dinge

Mit dem Smart Home Hub steuert ihr Licht und Heizung.

Das Gerät könnt ihr für 14 Tage ausleihen und zu Hause ausprobieren.

Stay connected, stay in control

Auflösung zu 3.1.2
  • Beispiel A – erfüllt. Jede anderssprachige Passage trägt lang: die beiden Buchtitel (cite lang="en", cite lang="fr"), das englische Motto (blockquote lang="en"), die drei Links des Sprachwählers (en, fr, tr) und die drei Kurzinfos. Ein Screenreader mit passenden Stimmen wechselt an jeder Stelle die Aussprache.
  • Beispiel B – nicht erfüllt. Derselbe Inhalt ohne ein einziges lang. Die deutsche Stimme liest den englischen Satz, die französische und die türkische Kurzinfo nach deutschen Ausspracheregeln; „Türkçe“ und „Français“ im Sprachwähler sind so kaum zu erkennen – ausgerechnet für die Menschen, die diese Links suchen. Sichtbar ist kein Unterschied zu Beispiel A; du findest ihn nur im Code oder in der Hörprobe.
  • Beispiel C – erfüllt (Ausnahmen). Kein lang, und es wird auch keines verlangt: „Chez Louise“ und „Harriet Whitcombe“ sind Eigennamen, „Open Access“ und „Peer-Review“ Fachbegriffe, „Team“, „Feedback“, „Newsletter“ und „Login“ längst Teil der deutschen Sprache. Kennzeichnen darf man solche Wörter, verlangt ist es nicht.
  • Beispiel D – nicht erfüllt (Streitfall aus dem Kurs, Antwort B). „Smart Home Hub“ ist ein Produktname, also ein Eigenname, und fällt unter die Ausnahme. Der Slogan „Stay connected, stay in control“ dagegen ist keine Bezeichnung, sondern ein ganzer englischer Satz. Ohne lang="en" liest ihn die deutsche Stimme mit deutscher Aussprache. Wegen des Slogans ist 3.1.2 hier nicht erfüllt. „Beides auszeichnen“ wäre zu streng, „keines, alles Marketing“ dehnt die Ausnahme zu weit.

Automatisch erkennbar? Nein. axe meldet zu Beispiel B und D nichts. Es prüft nur, ob ein vorhandenes lang einen gültigen Wert hat (Regel valid-lang, auch in Lighthouse) – nicht, ob irgendwo eines fehlt. Ob ein Text die Sprache wechselt, erkennt kein automatisches Werkzeug verlässlich.

Grenzfall: Englische Navigationswörter wie „Login“, „Shop“ oder „News“ gelten als eingedeutscht. Faustregel aus dem Kurs (keine Aussage der Norm): Steht das Wort im Duden und wird es deutsch ausgesprochen, braucht es kein lang. Einzelne Wörter zählen im Zweifel zur umgebenden Sprache. Bei Buchtiteln gehen die Meinungen auseinander – manche Prüfende zählen sie zu den Eigennamen; das Urteil zu Beispiel B hängt daran nicht, Motto, Kurzinfos und Sprachwähler sind eindeutig. Und: Die WCAG kennt nur erfüllt oder nicht erfüllt. Der BITV-Test bewertet den Prüfschritt abgestuft über die ganze Seite; ein einzelner kurzer Slogan fiele dort weniger ins Gewicht.

Verwandte Kriterien: 3.1.1 regelt die Hauptsprache der ganzen Seite. Das Attribut hreflang an einem Link nennt die Sprache der Zielseite – ein sinnvoller Zusatz, aber keine Forderung aus 3.1.2.

3.2.1 Bei Fokus

Stufe A, Hintergrund beim W3C: Understanding 3.2.1 (englisch)

Bekommt ein Bedienelement den Fokus, darf das allein keinen Kontextwechsel auslösen: kein neues Fenster, kein Seitenwechsel, kein Sprung des Fokus an eine andere Stelle, kein Inhalt, der den Sinn der Seite ändert. Klappt beim Fokus nur etwas auf oder erscheint ein Hinweis, ist das eine Inhaltsänderung und kein Kontextwechsel.

So prüfst du: Gehe mit Tab und Umschalt + Tab durch alle Bedienelemente – ohne Enter, ohne Leertaste. Springt der Fokus weg, öffnet sich ein Fenster, wechselt die Ansicht? Frage bei jedem Fund: Kontext oder nur Inhalt? Prüfe mit der Tastatur und nicht mit der Maus, denn ein Klick setzt den Fokus und aktiviert zugleich. Am Mac muss die Tastaturnavigation eingeschaltet sein (Systemeinstellungen → Tastatur); in Safari erreichst du Links mit Wahltaste + Tab.

Beispiel A

Medium vormerken

Beispiel B

Medium vormerken

Beispiel C

Medium vormerken

Auflösung zu 3.2.1
  • Beispiel A – nicht erfüllt. Sobald das Feld „Ausweisnummer“ den Fokus bekommt, öffnet sich ein Hilfefenster, und der Fokus springt hinein. Niemand hat etwas aktiviert – der Fokus allein löst es aus. Das ist ein Kontextwechsel (neues Fenster, Fokus an anderer Stelle). Wer mit der Tastatur durch das Formular geht, landet statt im Feld in einem Fenster; mit Screenreader oder starker Vergrößerung ist kaum nachzuvollziehen, was gerade passiert ist. Im Tab-Durchgang merkst du es sofort: Du wolltest ins Feld und stehst woanders. Das Feld bleibt benutzbar (mit zweimal Umschalt + Tab zurück oder nach „Schließen“), deshalb kein Befund zu 2.1.1 – aber jedes neue Fokussieren öffnet das Fenster wieder. Die Schaltfläche „Wo steht die Ausweisnummer?“ gibt es auch hier; sie ist nicht das Problem.
  • Beispiel B – erfüllt. Sieht aus wie Beispiel A, aber das Feld tut beim Fokus nichts. Das Hilfefenster öffnet sich erst, wenn du die Schaltfläche „Wo steht die Ausweisnummer?“ aktivierst. Dass der Fokus dann ins Fenster wandert, ist erwartet: Es ist die Folge einer Aktivierung, nicht des Fokus. „Schließen“ oder Esc bringt den Fokus zur Schaltfläche zurück.
  • Beispiel C – erfüllt (Grenzfall). Beim Fokus erscheint unter dem Feld ein Hinweis. Der Fokus bleibt im Feld, es öffnet sich kein Fenster, der Sinn der Seite ändert sich nicht: Inhaltsänderung, kein Kontextwechsel. Der Hinweis ist über aria-describedby mit dem Feld verbunden und wird beim Fokus mit angesagt. Sein Platz ist freigehalten; deshalb verschiebt sich nichts, wenn er erscheint oder verschwindet.

Automatisch erkennbar? Nein. Werkzeuge wie axe, WAVE oder Lighthouse bedienen die Seite nicht; axe meldet zu Beispiel A nichts. Das Verhalten zeigt sich nur beim Bedienen.

Grenzfall: Ein Datumsfeld, das beim Fokus einen Kalender einblendet, ist in Ordnung, solange der Fokus im Feld bleibt. Springt der Fokus dabei in den Kalender, ist es ein Fokuswechsel und damit ein Kontextwechsel: nicht erfüllt. Ein Mega-Menü, das beim Fokus aufklappt, ist für 3.2.1 unkritisch – dann aber 1.4.13 und 2.4.11 prüfen.

Verwandte Kriterien: Ein automatischer Fokussprung nach einer Eingabe gehört zu 3.2.2. Nimmt ein Skript den Fokus beim Fokussieren gleich wieder weg, sind zusätzlich 2.1.1 und 2.4.7 betroffen. 3.2.1 gilt unabhängig davon, wie der Fokus ankommt – auch ein Mausklick ins Feld von Beispiel A öffnet das Fenster.

3.2.2 Bei Eingabe

Stufe A, Hintergrund beim W3C: Understanding 3.2.2 (englisch)

Wer die Einstellung eines Bedienelements ändert – eine Option wählt, ein Häkchen setzt, Text eingibt –, löst damit nicht automatisch einen Kontextwechsel aus. Zulässig ist das nur, wenn das Verhalten angekündigt wurde, bevor man das Element benutzt.

So prüfst du: Ändere jede Einstellung, ohne danach etwas abzuschicken: Auswahlliste, Optionsfeld, Checkbox, Eingabefeld – erst mit der Maus, dann mit der Tastatur. In der Auswahlliste mit den Pfeiltasten: Unter Windows ändern sie in einer geschlossenen Liste je nach Browser sofort den Wert; Alt + Pfeil nach unten (in vielen Browsern auch F4) öffnet die Liste, dann wählt erst Enter aus. Am Mac öffnen die Pfeiltasten die Liste meist zuerst. Probiere es deshalb in deinem Browser aus. Frage bei jedem Fund: Kontextwechsel oder nur Inhaltsänderung? Und stand vorher ein Hinweis da?

Beispiel A

Adresse: buecherei-lindenau.example/buecherbus?region=nord

Bücherbus: Haltestellen in der Region Nord
  • Nordplatz – dienstags, 10 bis 12 Uhr
  • Schule am Wehr – donnerstags, 14 bis 15 Uhr

Beispiel B

Adresse: buecherei-lindenau.example/buecherbus?region=nord

Bücherbus: Haltestellen in der Region Nord
  • Nordplatz – dienstags, 10 bis 12 Uhr
  • Schule am Wehr – donnerstags, 14 bis 15 Uhr

Beispiel C

Adresse: buecherei-lindenau.example/buecherbus?region=nord

Bücherbus: Haltestellen in der Region Nord

Die Seite lädt nach Auswahl einer Region neu.

  • Nordplatz – dienstags, 10 bis 12 Uhr
  • Schule am Wehr – donnerstags, 14 bis 15 Uhr

Beispiel D

Vormerkung abholen
Abholort

Beispiel E

Gutschein einlösen
Nummer auf dem Gutschein (12 Ziffern)

Auflösung zu 3.2.2
  • Beispiel A – erfüllt. Die Auswahl in der Liste „Region“ ändert zunächst nichts. Erst die Schaltfläche „Anzeigen“ lädt die Seite neu. Eine Schaltfläche zu aktivieren ist keine „Einstellung ändern“ – dort ist ein Kontextwechsel erwartet. Mit den Pfeiltasten kannst du in Ruhe durch alle Regionen gehen.
  • Beispiel B – nicht erfüllt. Schon der Wechsel in der Liste lädt die Seite neu: Adresse und Inhalt wechseln, der Fokus steht danach am Seitenanfang und nicht mehr in der Liste. Angekündigt ist das nirgends. Wer mit den Pfeiltasten durch die Optionen geht, löst je nach Browser bei jedem Schritt ein Neuladen aus und muss jedes Mal neu zur Liste zurück; mit Screenreader beginnt die Seite jedes Mal von vorn. Ein Klassiker: die Auswahlliste, die beim Wechsel sofort navigiert.
  • Beispiel C – erfüllt, mit Empfehlung (Streitfall aus dem Kurs, Antwort C). Das Verhalten ist dasselbe wie in Beispiel B, aber davor steht sichtbar: „Die Seite lädt nach Auswahl einer Region neu.“ Der Hinweis steht in der Lesereihenfolge vor der Liste und ist zusätzlich per aria-describedby mit ihr verbunden, wird also beim Fokus angesagt. Das Kriterium erlaubt den Kontextwechsel ausdrücklich, wenn er vorher angekündigt ist – „nie zulässig“ (Antwort B) ist zu streng. Antwort A ist nicht verkehrt, aber unvollständig: Im Tastaturtest löst je nach Browser jeder Pfeiltasten-Schritt in der geschlossenen Liste das Neuladen aus. Das ist eine erhebliche Hürde. Ein Weg bleibt: Alt + Pfeil nach unten öffnet die Liste, Enter wählt aus. Deshalb in der Regel kein Verstoß gegen 2.1.1, aber ein Eintrag im Bericht als Empfehlung: Schaltfläche „Anzeigen“ ergänzen.
  • Beispiel D – erfüllt. Das Optionsfeld „Bücherbus“ blendet die Auswahl der Haltestelle ein, die Checkbox das Feld für die E-Mail-Adresse. Der Fokus bleibt, wo er ist, die neuen Felder stehen direkt hinter dem Bedienelement, der Sinn der Seite ändert sich nicht: Inhaltsänderung, kein Kontextwechsel.
  • Beispiel E – nicht erfüllt. Nach der vierten Ziffer springt der Fokus von selbst ins nächste Feld. Ein Fokuswechsel durch Eingabe ist ein Kontextwechsel, und angekündigt ist er nicht. Wer blind tippt und nach vier Ziffern wie gewohnt Tab drückt, überspringt ein Feld; wer zurückgeht, um einen Tippfehler zu verbessern, wird beim nächsten Zeichen wieder weitergeschoben. Mit einem Hinweis vor den Feldern („Nach vier Ziffern springt die Eingabe ins nächste Feld“) wäre das Kriterium erfüllt.

Automatisch erkennbar? Nein. Werkzeuge wie axe, WAVE oder Lighthouse bedienen die Seite nicht; axe meldet zu Beispiel B und E nichts. Das Verhalten zeigt sich nur beim Bedienen.

Grenzfall: Ein Hinweis unter der Liste oder nur auf einer Hilfeseite genügt nicht – er muss vor dem Bedienelement wahrnehmbar sein. Ob er zusätzlich programmatisch verknüpft sein muss, ist Auslegungssache; empfohlen ist es. Ein Live-Filter, der eine Trefferliste aktualisiert, ohne den Fokus zu verschieben, ist eine Inhaltsänderung – dann aber 4.1.3 prüfen: Wird die Trefferzahl angesagt?

Verwandte Kriterien: 3.2.1 betrifft Kontextwechsel schon beim bloßen Fokus, 3.2.2 solche nach einer Eingabe oder Auswahl. Gibt es bei einer selbst navigierenden Auswahlliste gar keinen Tastaturweg zu jeder Option, kommt 2.1.1 hinzu.

Zur Übungsseite: Ein echtes Neuladen würde dich von der Übungsseite wegführen. Deshalb baut das Beispiel den Kasten neu auf und setzt den Fokus auf die Überschrift der kleinen Seite. Für das Urteil macht das keinen Unterschied.

3.2.3 Konsistente Navigation

Stufe AA, Hintergrund beim W3C: Understanding 3.2.3 (englisch)

Navigationsbereiche, die sich auf mehreren Seiten eines Angebots wiederholen, stehen jedes Mal in derselben relativen Reihenfolge – außer Nutzende haben die Änderung selbst ausgelöst. Punkte dürfen hinzukommen oder wegfallen; die gemeinsamen Punkte behalten ihre Reihenfolge.

So prüfst du: Öffne je Beispiel die drei Seiten in drei Tabs. Schreibe je Seite auf: Welche Menüpunkte stehen in welcher Reihenfolge, wo steht der Sprunglink, wo die Suche? Vergleiche dann die Spalten – es zählt die Reihenfolge der gemeinsamen Punkte, nicht Farbe oder Gestaltung. Vergleiche bei gleicher Fensterbreite. Vergleiche auch, was am Seitenende im Fußbereich steht. Was du nicht siehst, findest du im Elementbaum der Entwicklerwerkzeuge oder in der Linkliste des Screenreaders (NVDA: Einfg + F7, VoiceOver: Rotor mit VO + U). Zwei Fenster nebeneinander: unter Windows Windows-Taste + Pfeil links bzw. Pfeil rechts, am Mac den grünen Fensterknopf gedrückt halten. Mit Bildschirmlupe oder starker Vergrößerung lieber die Tabs nacheinander durchgehen.

Auflösung zu 3.2.3
  • Beispiel A – erfüllt. Das ist die Beispielsite „Eins“. Auf jeder Seite dieselbe Folge: Sprunglink, Hilfezeile, Menü „Service“, Logo, Suche, dann die Hauptnavigation mit Start · Ausleihe · Veranstaltungen · Kontakt · Inhaltsübersicht, darunter der Schnellzugriff und im Fuß Kontakt · Inhaltsübersicht · Zum Seitenanfang. Wer sich einmal gemerkt hat, an welcher Stelle ein Menüpunkt steht, findet ihn auf jeder Seite dort wieder. Erlaubte Abweichungen: Der Punkt der aktuellen Seite ist hervorgehoben, und die Seite „Ausleihe“ hat zusätzlich die Navigation „Auf dieser Seite“.
  • Beispiel B – nicht erfüllt. Das ist die Beispielsite „Zwei“. Die Hauptnavigation hat überall dieselben vier Punkte, aber in wechselnder Reihenfolge:
    • Seite 1 (Start): Start · Ausleihe · Veranstaltungen · Kontakt
    • Seite 2 (Ausleihe): Start · Veranstaltungen · Ausleihe · Kontakt
    • Seite 3 (Veranstaltungen): Veranstaltungen · Start · Kontakt · Ausleihe
    Das trifft Menschen, die sich die Position merken, statt jedes Mal alles zu lesen: Menschen mit kognitiven Einschränkungen, Screenreader-Nutzende („dritter Link in der Navigation“) und Menschen, die mit starker Vergrößerung nur einen kleinen Ausschnitt sehen. In Code und Darstellung ist die Reihenfolge dieselbe; du findest den Unterschied also mit bloßem Auge wie in der Linkliste.

Kein Befund zu 3.2.3 in Beispiel B: Der Punkt der aktuellen Seite ist hervorgehoben; die Seite „Ausleihe“ hat zusätzlich „Auf dieser Seite“; der Schnellzugriff mit acht Links unter der Hauptnavigation und die zwei Links der letzten Fußzeile stehen überall an derselben Stelle. Dass es in dieser Website weder Sprunglink noch Suche gibt, gehört zu 2.4.1 und 2.4.5 – hier zählt nur die Reihenfolge dessen, was sich wiederholt. Am unteren Fensterrand dieser Website steht eine Hinweisleiste, die die letzte Fußzeile verdeckt. Sie lässt sich nur mit der Maus schließen (×), und zwar nach jedem Laden einer Seite neu – das ist ein eigener Befund zu 2.4.11 und 2.1.1, nicht zu 3.2.3.

Automatisch erkennbar? Nein. axe, WAVE und Lighthouse prüfen jeweils eine einzelne Seite und vergleichen keine Seiten miteinander.

Grenzfall: „Gleiche relative Reihenfolge“ ist großzügiger als „identisch“. Erlaubt sind ein hervorgehobener aktiver Menüpunkt, ein auf der Unterseite ausgeklapptes Untermenü und zusätzliche oder fehlende Punkte. Auf dem Smartphone steckt die Navigation oft in einem Aufklappmenü, am Rechner in einer Leiste – kein Verstoß; verglichen werden Seiten in derselben Darstellung. Eine Startseite mit ganz anderem Kopf ist nur dann ein Problem, wenn dort dieselben Navigationspunkte in anderer Reihenfolge stehen.

Verwandte Kriterien: 3.2.4 fragt nach gleichen Namen für gleiche Funktionen, 3.2.6 nach dem Ort der Hilfe. Die Suche zählt zur Navigation, also hierher. Alle drei lassen sich nur prüfen, wenn die Stichprobe mehrere Seiten mit gemeinsamer Navigation enthält – ebenso 2.4.5.

3.2.4 Konsistente Kennzeichnung

Stufe AA, Hintergrund beim W3C: Understanding 3.2.4 (englisch)

Bedienelemente, die auf mehreren Seiten eines Angebots dasselbe tun, sind einheitlich gekennzeichnet: im sichtbaren Text, im zugänglichen Namen und im Alternativtext von Symbolen. Einheitlich heißt nicht wortgleich – „PDF 1 herunterladen“ und „PDF 2 herunterladen“ passen zusammen.

So prüfst du: Öffne je Beispiel die drei Seiten in drei Tabs. Suche Bedienelemente, die auf mehreren Seiten dieselbe Funktion haben – etwa Drucken, zum Seitenanfang, Anmelden, Suchen. Notiere je Seite den sichtbaren Text und den Namen im Barrierefreiheitsbaum (Rechtsklick → „Untersuchen“, Bereich „Barrierefreiheit“ bzw. „Accessibility“); bei Symbolen ist das der Alternativtext. Ohne Entwicklerwerkzeuge: mit dem Screenreader per Tab auf das Element gehen und den angesagten Namen notieren. Vergleiche auch, was am Seitenende steht. Was du nicht siehst, findest du im Elementbaum der Entwicklerwerkzeuge oder in der Linkliste des Screenreaders. Frage bei jedem Fund: Ist es wirklich dieselbe Funktion? Zwei Fenster nebeneinander: unter Windows Windows-Taste + Pfeil links bzw. Pfeil rechts, am Mac den grünen Fensterknopf gedrückt halten. Mit Bildschirmlupe oder starker Vergrößerung lieber die Tabs nacheinander durchgehen.

Auflösung zu 3.2.4
  • Beispiel A – nicht erfüllt. Das ist die Beispielsite „Zwei“. Dieselbe Funktion heißt je Seite anders – die Tabelle unten zeigt drei Funktionen im Vergleich. Wer mit dem Screenreader nach einem bekannten Namen sucht oder per Sprachsteuerung „Drucken klicken“ sagt, findet die Funktion auf der nächsten Seite nicht wieder; Menschen mit kognitiven Einschränkungen müssen jedes Mal neu erschließen, ob das dasselbe ist. Beim Drucken ist nur ein Symbol zu sehen: Dort fällt der Unterschied erst im Barrierefreiheitsbaum oder mit dem Screenreader auf.
  • Beispiel B – erfüllt. Das ist die Beispielsite „Eins“. „Drucken“ (Schaltfläche mit Text, das Symbol hat einen leeren Alternativtext) und „Zum Seitenanfang“ heißen auf jeder Seite gleich, sichtbar wie im Namen. „Anmelden“ heißt sichtbar überall gleich; im zugänglichen Namen folgt nach einem Doppelpunkt die Veranstaltung, etwa die Vorlesestunde für Kinder ab 4 Jahren. Das ist einheitlich, nicht wortgleich – wie „PDF 1 herunterladen“ und „PDF 2 herunterladen“.
Beispiel A: Name derselben Funktion auf den drei Seiten
FunktionSeite 1: StartSeite 2: AusleiheSeite 3: Veranstaltungen
Drucken (nur Symbol neben der Seitenüberschrift, Name aus dem Alternativtext)„Drucken“„Printer“„Papierausgabe“
Zum Seitenanfang (Link in der letzten Fußzeile)„Zum Seitenanfang“„Nach oben“„Top“
Zu einer Veranstaltung anmelden (Link bei der Veranstaltung)„Jetzt buchen“„Platz reservieren“„Anmelden“

Wenn dir in Beispiel A der Link zum Seitenanfang fehlt: Am unteren Fensterrand dieser Website steht eine Hinweisleiste, die die letzte Fußzeile verdeckt. Sie lässt sich nur mit der Maus schließen (×), und zwar nach jedem Laden einer Seite neu – das ist ein eigener Befund zu 2.4.11 und 2.1.1, nicht zu 3.2.4. Schließe die Leiste mit der Maus oder lies den Link im Elementbaum bzw. in der Linkliste des Screenreaders.

Automatisch erkennbar? Nein. Die Werkzeuge prüfen einzelne Seiten; ob ein Name zu dem auf einer anderen Seite passt, vergleichen sie nicht.

Grenzfall: Ein Drucker-Symbol mit dem Alternativtext „Drucken“ auf der einen und „Seite drucken“ auf der anderen Seite ist einheitlich genug: erfüllt. „Warenkorb“ und „Einkaufswagen“ für dieselbe Funktion: nicht erfüllt. Ein Pfeil heißt auf Seite 1 „Weiter“ (nächster Artikel) und auf Seite 2 „Weiter“ (nächster Formularschritt): verschiedene Funktionen, also kein Fall für 3.2.4 – dann aber 2.4.4 prüfen. Zwei verschieden benannte Suchfelder auf derselben Seite: Auslegungssache, denn das Kriterium spricht von einer Gruppe von Seiten; im Zweifel als Empfehlung festhalten.

Verwandte Kriterien: 3.2.3 betrifft die Reihenfolge der Navigation, 3.2.4 die Namen. Ob ein Name überhaupt vorhanden ist, klärt 4.1.2 bzw. 1.1.1; ob der sichtbare Text im Namen steckt, 2.5.3.

3.2.6 Konsistente Hilfe

Stufe A, neu seit WCAG 2.2, Hintergrund beim W3C: Understanding 3.2.6 (englisch)

Bietet ein Angebot Hilfe an und wiederholt sich dieses Hilfeangebot auf mehreren Seiten, dann steht es überall an derselben Stelle im Verhältnis zum übrigen Inhalt. Als Hilfe zählen vier Arten: Kontaktdaten, ein Kontaktweg zu einem Menschen wie Formular oder Chat, Selbsthilfe wie eine Hilfeseite oder häufige Fragen, ein automatischer Kontaktweg wie ein Chatbot. Eine Pflicht, überhaupt Hilfe anzubieten, enthält das Kriterium nicht.

So prüfst du: Stelle zuerst fest, ob es überhaupt Hilfe gibt – ohne Hilfeangebot ist das Kriterium nicht anwendbar. Öffne dann je Beispiel die drei Seiten in drei Tabs und suche Telefonnummer, E-Mail-Adresse, Kontaktlink, Hilfeseite oder Chat. Notiere je Seite, wo das Hilfeangebot im Verhältnis zum übrigen Inhalt steht: im Kopf, vor oder mitten im Hauptinhalt, im Fuß? Maßgeblich ist die Reihenfolge im Code; du siehst sie im Elementbaum der Entwicklerwerkzeuge oder hörst sie beim Vorlesen mit dem Screenreader. Vergleiche auch, was am Seitenende steht – was du dort nicht siehst, findest du ebenfalls im Elementbaum. Vergleiche bei gleicher Fensterbreite und gleichem Zoom. Zwei Fenster nebeneinander: unter Windows Windows-Taste + Pfeil links bzw. Pfeil rechts, am Mac den grünen Fensterknopf gedrückt halten. Mit Bildschirmlupe oder starker Vergrößerung lieber die Tabs nacheinander durchgehen.

Auflösung zu 3.2.6
  • Beispiel A – erfüllt. Das ist die Beispielsite „Eins“. Die Zeile „Fragen? Telefon 0000 123456 oder Kontaktformular“ steht auf jeder Seite in der obersten Zeile des Kopfes, direkt nach dem Sprunglink. Achtung beim Urteil: Das ist „erfüllt“ und nicht „nicht anwendbar“. Nicht anwendbar wäre das Kriterium nur, wenn es gar kein Hilfeangebot gäbe.
  • Beispiel B – nicht erfüllt. Das ist die Beispielsite „Zwei“. Dieselbe Zeile „Fragen? Telefon 0000 123456 oder Kontaktformular“ wandert:
    • Seite 1 (Start): oberste Zeile im Kopf
    • Seite 2 (Ausleihe): Kasten mitten im Inhalt, vor „Häufige Fragen“
    • Seite 3 (Veranstaltungen): dritte Spalte im Fuß, unter „Hilfe“
    Wer bei einer Aufgabe festhängt und Hilfe braucht, muss sie auf jeder Seite neu suchen. Das trifft vor allem Menschen mit kognitiven Einschränkungen, aber auch alle, die mit Screenreader oder starker Vergrößerung nicht die ganze Seite überblicken.

Einwand „Der Link Kontakt steht doch überall gleich“: Stimmt – der Link „Kontakt“ in der letzten Fußzeile und das Menü „Service“ im Kopf bleiben in Beispiel B an ihrem Platz. Das rettet das Urteil nicht: Telefonnummer und Link zum Kontaktformular wiederholen sich ebenfalls auf mehreren Seiten, und sie wandern. Am unteren Fensterrand dieser Website steht eine Hinweisleiste, die die letzte Fußzeile verdeckt. Sie lässt sich nur mit der Maus schließen (×), und zwar nach jedem Laden einer Seite neu – das ist ein eigener Befund zu 2.4.11 und 2.1.1, nicht zu 3.2.6.

Automatisch erkennbar? Nein. Kein Werkzeug vergleicht den Ort der Hilfe über mehrere Seiten.

Grenzfall: Kontaktlink im Fuß aller Seiten und zusätzlich groß im Inhalt der Kontaktseite: erfüllt – der wiederholte Mechanismus steht einheitlich, der zusätzliche Eintrag ist Inhalt. Chat-Symbol sonst unten rechts, auf der Bestellseite aber oben links: nicht erfüllt. Chat nur auf zwei von zehn Seiten, dort aber an gleicher Stelle: erfüllt – das Kriterium verlangt nicht, dass die Hilfe auf jeder Seite steht.

Verwandte Kriterien: Die Suche gehört nicht zu den vier Hilfearten, sondern zur Navigation: 3.2.3. 3.2.6 ist neu seit WCAG 2.2 und steht auf Stufe A; in EN 301 549 V3.2.1 ist es noch nicht enthalten.

3.3.1 Fehleridentifizierung

Stufe A, Hintergrund beim W3C: Understanding 3.3.1 (englisch)

Erkennt die Seite einen Eingabefehler selbst, muss sie zwei Dinge tun: das betroffene Feld kenntlich machen und den Fehler in Text beschreiben. Eine Farbe, ein Rahmen oder ein Symbol allein beschreiben nichts.

So prüfst du: Schicke jedes Formular dreimal ab: leer, mit einer E-Mail-Adresse ohne @ und mit 20 Tagen. Frage jedes Mal: Lese ich in Text, welches Feld betroffen ist und was nicht stimmt? Wo steht danach der Fokus? Mit Screenreader (NVDA: Strg + Alt + N, Windows-Sprachausgabe: Windows + Strg + Enter, VoiceOver am Mac: Cmd + F5): Was wird nach dem Abschicken angesagt? Ohne Screenreader: Feld untersuchen (Rechtsklick, „Untersuchen“) und im Barrierefreiheitsbaum nach Beschreibung und dem Zustand „ungültig“ sehen.

Beispiel A

Erinnerung an die Leihfrist

Wir schreiben dir, bevor deine Leihfrist abläuft. Alle Felder sind Pflichtfelder.

Beispiel B

Erinnerung an die Leihfrist

Wir schreiben dir, bevor deine Leihfrist abläuft. Alle Felder sind Pflichtfelder.

Beispiel C

Erinnerung an die Leihfrist

Wir schreiben dir, bevor deine Leihfrist abläuft. Alle Felder sind Pflichtfelder.

Beispiel D

Erinnerung an die Leihfrist

Wir schreiben dir, bevor deine Leihfrist abläuft. Alle Felder sind Pflichtfelder.

Beispiel E

Erinnerung an die Leihfrist

Wir schreiben dir, bevor deine Leihfrist abläuft. Alle Felder sind Pflichtfelder.

Auflösung zu 3.3.1
  • Beispiel A – nicht erfüllt. Nach dem Abschicken wechselt nur die Rahmenfarbe der betroffenen Felder von Grau zu Rot. Es gibt keinen Text, der das Feld nennt oder den Fehler beschreibt. Wer mit Screenreader arbeitet, erfährt gar nichts; wer Rot und Grau schlecht unterscheidet, sucht vergeblich. Das verletzt außerdem 1.4.1: Die beiden Rahmenfarben sind fast gleich hell (Kontrast untereinander etwa 1,03:1), die Information steckt also allein in der Farbe. Zwei Befunde, eine Ursache.
  • Beispiel B – erfüllt. Unter jedem betroffenen Feld steht ein Text, der das Feld nennt und sagt, was nicht stimmt („In der E-Mail-Adresse fehlt das @-Zeichen …“). Das Feld bekommt aria-invalid="true", die Meldung hängt über aria-describedby am Feld, und der Fokus springt in das erste betroffene Feld – ein Screenreader liest also Beschriftung, Zustand und Meldung in einem Zug. Symbol und Text tragen die Information, nicht die Farbe allein. Die Meldungen sagen auch, wie es richtig geht (3.3.3).
  • Beispiel C – nicht erfüllt (Streitfall aus dem Kurs). Roter Rahmen plus Warndreieck mit dem Alternativtext „Fehler“. 1.4.1 ist hier erfüllt, denn das Dreieck ist ein zweites Merkmal neben der Farbe. 3.3.1 verlangt aber eine Beschreibung in Text: „Fehler“ sagt nicht, was falsch ist, und sichtbar zu lesen ist es auch nicht. Sehende wie blinde Nutzende wissen nur, dass etwas nicht stimmt.
  • Beispiel D – nicht erfüllt. Hier gibt es Text, und er wird sogar angesagt (role="alert", 4.1.3 ist erfüllt). Aber die Meldung nennt weder das Feld noch den Fehler. Bei drei Feldern ist das lästig, bei dreißig eine Sackgasse – besonders mit Vergrößerung, wenn man nur einen Ausschnitt sieht, und für Menschen, denen das Vergleichen und Suchen schwerfällt. Mitverletzt: 3.3.3.
  • Beispiel E – erfüllt (Grenzfall). Dieses Formular überlässt die Prüfung dem Browser (required, type="email", min und max). Der Browser setzt den Fokus ins erste betroffene Feld und zeigt dort eine Textblase; Screenreader sagen sie an. In der Prüfpraxis gilt das meist als erfüllt. Schwächen, die du als Empfehlung notierst: Die Blase verschwindet nach kurzer Zeit, zeigt immer nur einen Fehler und ist bei starker Vergrößerung leicht zu übersehen.

Automatisch erkennbar? Nein. WAVE, axe und Lighthouse schicken von sich aus kein Formular ab. Auch im von Hand erzeugten Fehlerzustand meldet axe in diesem Abschnitt nichts – weder in A noch in C oder D: Ob ein Text den Fehler beschreibt, kann kein Werkzeug beurteilen. Das Kriterium ist Handarbeit.

Grenzfall: Prüft ein Formular gar nichts, ist 3.3.1 nicht anwendbar – es gibt dann keinen „automatisch erkannten“ Fehler. Die Verknüpfung der Meldung mit dem Feld über aria-describedby verlangt 3.3.1 nicht ausdrücklich; sie ist gute Praxis und stützt 1.3.1.

Verwandte Kriterien: 1.4.1 fragt, ob die Kennzeichnung nur über Farbe läuft. 4.1.3 fragt, ob eine Meldung angesagt wird, die den Fokus nicht erhält. 3.3.3 fragt, ob die Meldung einen Weg zur Korrektur nennt. 3.3.2 fragt, ob die Anforderung schon vor dem Abschicken sichtbar war.

3.3.2 Beschriftungen (Labels) oder Anweisungen

Stufe A, Hintergrund beim W3C: Understanding 3.3.2 (englisch)

Wo eine Eingabe verlangt wird, steht sichtbar dabei, was einzutragen ist: eine Beschriftung oder eine Anweisung. Dazu gehören das erwartete Format, die Kennzeichnung der Pflichtfelder und bei Gruppen die Frage, auf die geantwortet wird – alles, bevor man abschickt.

So prüfst du: Reine Sichtprüfung, auf Windows und Mac gleich. Geh Feld für Feld durch: Sehe ich, was hier hineingehört und in welcher Form? Tippe in jedes Feld etwas ein: Ist die Beschriftung dann noch zu sehen? Sind Pflichtfelder gekennzeichnet und ist die Kennzeichnung erklärt? Hat jede Gruppe von Auswahlfeldern eine sichtbare Frage? Schicke danach leer ab: Erfährst du dabei Anforderungen, die vorher nirgends standen?

Beispiel A

Ausweis verlängern

Pflichtfelder sind mit einem Stern (*) gekennzeichnet.

8 Ziffern, auf der Rückseite deines Ausweises, zum Beispiel 00412345

Format TT.MM.JJJJ, zum Beispiel 05.10.1990

Verlängern um

Beispiel B

Ausweis verlängern

Beispiel C

Anmelden

Beispiel D

Auflösung zu 3.3.2
  • Beispiel A – erfüllt. Jedes Feld hat eine sichtbare Beschriftung, die beim Tippen stehen bleibt. Der Stern ist am Anfang erklärt, die Formate für Ausweisnummer und Geburtsdatum stehen vor der Eingabe am Feld, und die Auswahl hat eine sichtbare Frage („Verlängern um“ als legend).
  • Beispiel B – nicht erfüllt. Zwei klare Lücken: Der Stern wird nirgends erklärt (Kursposition seit Tag 3: Die fehlende Erklärung gehört zu 3.3.2). Und das Format von Ausweisnummer und Geburtsdatum erfährt man erst aus der Meldung nach dem Abschicken – die Meldung ist ordentlich (3.3.1 und 3.3.3 sind erfüllt), aber die Anweisung kommt zu spät. Zusätzlich steht über „6 Monate / 12 Monate“ keine sichtbare Frage; der Titel „Ausweis verlängern“ legt den Zusammenhang zwar nahe, für sich allein wäre das deshalb der schwächste Grund. Im Code ist alles benannt (aria-label="Verlängern um", required), ein Screenreader bekommt also sogar mehr als ein sehender Mensch. Betroffen sind alle, am stärksten Menschen, die Anforderungen nicht erraten können oder nach einer abgelehnten Eingabe aufgeben.
  • Beispiel C – nicht erfüllt (Streitfall aus dem Kurs, Kursentscheidung). Sichtbar sind nur die Platzhalter. Sobald man tippt, sind sie weg: Wer vor dem Absenden noch einmal prüft, nach einer Unterbrechung zurückkommt oder mit Vergrößerung nur einen Ausschnitt sieht, weiß nicht mehr, welches Feld was verlangt. Das aria-label hilft dem Screenreader (4.1.2), ändert an der sichtbaren Beschriftung aber nichts. Bei einem sehr kurzen Login vergeben manche Prüfende „eher erfüllt“ – vertretbar, aber keine Empfehlung; der BIK BITV-Test (Prüfschritt 9.3.3.2) lässt einen Platzhalter nicht als Beschriftung gelten. Der Platzhalter ist hier absichtlich dunkel genug (5,9:1); der übliche hellgraue Platzhalter wäre zusätzlich ein Befund zu 1.4.3.
  • Beispiel D – erfüllt (Grenzfall). Das Suchfeld hat keine eigene sichtbare Beschriftung. Die Schaltfläche „Suchen“ direkt daneben übernimmt diese Aufgabe (Technik G167). Für Hilfsmittel trägt das Feld den Namen „Suchen im Katalog“.

Automatisch erkennbar? Kaum. Die Werkzeuge prüfen, ob ein Feld im Code einen Namen hat – nicht, ob ein Mensch eine Beschriftung sieht. B und C haben Namen im Code und bleiben deshalb unauffällig; axe meldet in diesem Abschnitt nichts. Umgekehrt gilt: Meldet WAVE oder Lighthouse „fehlende Beschriftung“, ist das zuerst ein Befund zu 1.3.1 oder 4.1.2, nicht automatisch zu 3.3.2.

Grenzfall: Verlangt ist nicht möglichst viel Text. Ein Feld „Vorname“ braucht keine Anweisung; ein Datum, eine Nummer oder ein Passwort mit Regeln braucht eine.

Verwandte Kriterien: Ob die Beschriftung im Code mit dem Feld verknüpft ist: 1.3.1 und 4.1.2. Ob sie das Feld treffend beschreibt: 2.4.6. Ob der sichtbare Text im zugänglichen Namen steckt: 2.5.3. Schneller Test der Verknüpfung ohne Werkzeug: Klick auf den Beschriftungstext setzt den Fokus ins Feld.

3.3.3 Fehlerempfehlung

Stufe AA, Hintergrund beim W3C: Understanding 3.3.3 (englisch)

Erkennt die Seite einen Eingabefehler und weiß sie, wie es richtig ginge, dann sagt sie es: das erwartete Format, den erlaubten Bereich, einen konkreten Vorschlag. Ausgenommen sind Vorschläge, die die Sicherheit oder den Zweck des Inhalts gefährden würden.

So prüfst du: Erzeuge in A und B dieselben Fehler: Datum 2026/10/05, danach 31.02.2027; Personen 12; E-Mail mia@post.exampel, danach eine Adresse ohne @. Frage bei jeder Meldung: Wüsste die Seite, wie es richtig geht – und steht es in der Meldung? Dafür brauchst du kein Werkzeug; Windows und Mac unterscheiden sich nicht. Mit Screenreader zusätzlich: Wird der Vorschlag mit dem Feld angesagt?

Beispiel A

Gruppenraum reservieren

Alle Felder sind Pflichtfelder.

Format TT.MM.JJJJ

2 bis 8

Beispiel B

Gruppenraum reservieren

Alle Felder sind Pflichtfelder.

Format TT.MM.JJJJ

2 bis 8

Beispiel C

Am Büchereikonto anmelden

In dieser Übung gibt es keine Konten: Jede Anmeldung wird abgelehnt. Gib nur ausgedachte Daten ein.

Auflösung zu 3.3.3
  • Beispiel A – erfüllt. Jede Meldung zeigt den Weg zur Korrektur: das Format mit Beispiel, den erlaubten Bereich, bei „31.02.2027“ den Grund (der Februar 2027 hat 28 Tage). Wo die Seite den gemeinten Wert erraten kann – 2026/10/05 oder die Endung .exampel –, bietet sie ihn als Schaltfläche „Vorschlag übernehmen“ an. Die Meldung steht direkt am Feld und ist über aria-describedby damit verbunden; die Schaltfläche folgt als nächster Tab-Stopp.
  • Beispiel B – nicht erfüllt. Dieselbe Prüfung, aber jede Meldung lautet „Eingabe ungültig.“ Das Feld ist gekennzeichnet und der Fehler minimal in Text benannt – 3.3.1 ist damit knapp erfüllt. 3.3.3 ist an drei Stellen eindeutig verletzt. Am E-Mail-Feld steht nirgends ein Hinweis: weder beim fehlenden @ noch bei der Endung .exampel, obwohl die Seite beides erkennt. Beim leeren Pflichtfeld sagt die Meldung nicht, dass eine Angabe fehlt. Und bei 31.02.2027 stimmt das Format; den Grund – diesen Tag gibt es nicht – kennt die Seite und nennt ihn nicht. Bei 2026/10/05 und 12 steht der Hinweis („Format TT.MM.JJJJ“, „2 bis 8“) immerhin dauerhaft am Feld und wird mit der Meldung angesagt; ob das als Vorschlag genügt, bewerten Prüfende unterschiedlich. Das Ganze trifft besonders Menschen mit kognitiven Einschränkungen oder Lernschwierigkeiten und alle, die das Formular mit Screenreader oder starker Vergrößerung nicht „mal eben“ nach Hinweisen absuchen können.
  • Beispiel C – erfüllt (Ausnahme Sicherheit). „Ausweisnummer oder Passwort stimmt nicht“ verrät absichtlich nicht, welcher Teil nicht stimmt. Ein genauerer Hinweis würde Unbefugten helfen. Sind Felder leer, sagt die Meldung trotzdem, welche fehlen – das gefährdet nichts.

Automatisch erkennbar? Nein. Kein Werkzeug erzeugt die Fehler oder beurteilt den Inhalt einer Meldung; axe meldet in diesem Abschnitt nichts.

Grenzfall: Die Ausnahme Sicherheit deckt Zugangsdaten, nicht jede Passwort-Meldung. Die Regeln für ein neues Passwort („mindestens 12 Zeichen“) vorab und im Fehlerfall zu nennen, gefährdet nichts. Und: Kennt die Seite keine Korrektur – etwa bei einer unbekannten Ausweisnummer –, kann sie auch keine vorschlagen; dann genügt die Beschreibung nach 3.3.1.

Verwandte Kriterien: 3.3.1 ist die Voraussetzung: ohne erkannten Fehler ist 3.3.3 nicht anwendbar. 3.3.2 verlangt die Formatangabe schon vor der Eingabe; sie steht hier in A und B am Feld. Kursposition: Im Fehlerfall gehört der Weg zur Korrektur trotzdem in die Meldung, weil erst sie sagt, was an dieser einen Eingabe nicht passt. Zwingend aus dem Normtext folgt das nicht – deshalb stützt sich das Urteil zu B auf die Stellen ohne jeden Hinweis.

3.3.4 Fehlervermeidung (rechtliche, finanzielle, Daten)

Stufe AA, Hintergrund beim W3C: Understanding 3.3.4 (englisch)

Wo ein Fehler teuer wird – bei rechtlichen Verpflichtungen, Zahlungen, beim Ändern oder Löschen eigener gespeicherter Daten und bei Testantworten –, braucht es mindestens einen von drei Wegen: Das Absenden ist umkehrbar, die Eingaben werden auf Fehler geprüft und lassen sich korrigieren, oder vor dem Abschluss gibt es eine Übersicht zum Prüfen, Korrigieren und Bestätigen.

So prüfst du: Erst die Anwendbarkeit: Entsteht hier eine Verpflichtung oder Zahlung, werden eigene Daten geändert oder gelöscht, ist es ein Test? Wenn ja, geh die drei Wege durch. In A bis D: Wähle den zweiten Termin, trage bei den Plätzen 33 ein und löse die Schaltfläche aus. Wird die Eingabe geprüft, und kannst du sie korrigieren? Kommt eine Übersicht oder eine Rückfrage? Lässt sich dort ändern, ohne alles neu einzugeben? Gibt es danach eine Rücknahme? In F und G: Lösche eine Vormerkung. Wirst du gefragt, oder bekommst du sie zurück? Kein Werkzeug nötig; Windows und Mac unterscheiden sich nicht. Mit „zurücksetzen“ stellst du ein Beispiel wieder auf Anfang.

Beispiel A

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Schreibwerkstatt: Anmeldung

Die Anmeldung ist verbindlich. Teilnahmegebühr: 12,00 € je Platz, Abbuchung vom Büchereikonto. Beide Angaben sind Pflicht.

Termin

1 bis 4

Beispiel B

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Schreibwerkstatt: Anmeldung

Die Anmeldung ist verbindlich. Teilnahmegebühr: 12,00 € je Platz, Abbuchung vom Büchereikonto. Beide Angaben sind Pflicht.

Termin

1 bis 4

Beispiel C

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Schreibwerkstatt: Anmeldung

Die Anmeldung ist verbindlich. Teilnahmegebühr: 12,00 € je Platz, Abbuchung vom Büchereikonto. Beide Angaben sind Pflicht.

Termin

1 bis 4

Beispiel D

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Schreibwerkstatt: Anmeldung

Die Anmeldung ist verbindlich. Teilnahmegebühr: 12,00 € je Platz, Abbuchung vom Büchereikonto. Beide Angaben sind Pflicht.

Termin

1 bis 4

Beispiel E

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Frage an die Stadtbücherei

Beispiel F

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Meine Vormerkungen

Hier verwaltest du deine Vormerkungen.

  • „Der Garten im Winter“ – Platz 2 auf der Warteliste
  • „Schach für Einsteiger“ – Platz 5 auf der Warteliste
  • „Lindenau in alten Karten“ – abholbereit bis Freitag

Beispiel G

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Meine Vormerkungen

Hier verwaltest du deine Vormerkungen.

  • „Der Garten im Winter“ – Platz 2 auf der Warteliste
  • „Schach für Einsteiger“ – Platz 5 auf der Warteliste
  • „Lindenau in alten Karten“ – abholbereit bis Freitag
Auflösung zu 3.3.4
  • Beispiel A – erfüllt (geprüft; Kursposition). Die Anmeldung ist verbindlich und kostet Geld – das Kriterium ist anwendbar. Die Seite prüft die Eingabe: Bei 33, bei Buchstaben und beim leeren Feld erscheint eine Meldung am Feld, die Auswahl bleibt stehen, du kannst korrigieren. Das ist der Weg „geprüft“, und ein Weg von dreien genügt. Es ist der schwächste: Einen verrutschten Termin oder „3“ statt „2“ erkennt keine Prüfung, und danach wird sofort gebucht, ohne Übersicht und ohne Stornierung. Das gehört als Empfehlung in den Bericht, nicht als Verstoß.
  • Beispiel B – nicht erfüllt. Sieht aus wie A, aber die Seite prüft nichts: 33, abc oder ein leeres Feld werden mit einem Klick verbindlich gebucht. Keine Eingabeprüfung, keine Übersicht oder Rückfrage, keine Rücknahme – keiner der drei Wege. Das trifft alle, die sich leichter vertippen oder verklicken: Menschen mit motorischen Einschränkungen, mit Screenreader oder Spracheingabe, mit Konzentrations- oder Leseschwierigkeiten.
  • Beispiel C – erfüllt (bestätigt). Geprüft wird wie in A. Dazu kommt vor dem Abschluss eine Übersicht mit Termin, Plätzen und Summe. „Angaben ändern“ führt zurück ins Formular, die Eingaben bleiben erhalten; erst „Zahlungspflichtig anmelden“ in der Übersicht bucht (Technik G98). Bei jedem Wechsel springt der Fokus auf die Überschrift der neuen Ansicht. So fängt man auch den verrutschten Termin.
  • Beispiel D – erfüllt (umkehrbar). Geprüft wird wie in A, gebucht wird sofort. Die Bestätigung nennt aber eine Frist für die kostenlose Stornierung und bietet sie gleich an (Technik G164).
  • Beispiel E – nicht anwendbar. Eine Frage an die Bücherei begründet keine rechtliche Verpflichtung, löst keine Zahlung aus, ändert keine gespeicherten Daten und ist kein Test. Im Protokoll steht dann „nicht anwendbar“ mit einem Satz Begründung – nicht „erfüllt“.
  • Beispiel F – erfüllt (umkehrbar). Hier werden eigene gespeicherte Daten gelöscht – anwendbar. „Löschen“ fragt nicht nach, aber die Vormerkung landet unter „Gelöschte Vormerkungen“ und lässt sich dort wiederherstellen (Technik G99). Nach jedem Schritt steht der Fokus auf der Meldung, die sagt, was passiert ist.
  • Beispiel G – nicht erfüllt. Dieselbe Liste, aber „Löschen“ entfernt die Vormerkung sofort und endgültig: keine Rückfrage, kein Rückgängig. Eine Eingabe, die sich prüfen ließe, gibt es hier nicht – der Weg „geprüft“ fällt also auch aus. Ein Fehlklick kostet den Platz auf der Warteliste.

Die Schaltflächen „zurücksetzen“ über den Beispielen gehören zur Übungsseite. Sie sind keine Stornierung und kein Wiederherstellen im Sinn des Kriteriums.

Automatisch erkennbar? Nein. Kein Werkzeug weiß, ob ein Formular eine Verpflichtung auslöst, und keines geht den Prozess durch. axe meldet in diesem Abschnitt nichts.

Grenzfall „geprüft“ (Kursposition): Der Normtext nennt drei gleichwertige Wege; ein Formular, das Eingaben auf Fehler prüft und korrigieren lässt, erfüllt 3.3.4 auch ohne eigenen Prüfschritt. Nicht erfüllt ist nur, was verbindlich auslöst ohne Eingabeprüfung, ohne Bestätigung und ohne Rücknahme. Der BIK BITV-Test ist strenger: Prüfschritt 9.3.3.4 erwartet vor dem Abschicken eine Anzeige der Daten mit Korrekturmöglichkeit, eine Bestätigung oder eine Rückabwicklung. Wer nach BITV-Test prüft, wertet Beispiel A deshalb anders. Schreib im Bericht dazu, nach welchem Verfahren du geurteilt hast.

Weitere Grenzfälle: Die Übersicht ist da, aber „Ändern“ führt an den Anfang und alle Angaben sind weg: 3.3.4 bleibt erfüllt, das erneute Eintippen ist ein Befund zu 3.3.7. Weitere anerkannte Wege: ein Kontrollkästchen „Ich habe meine Angaben geprüft“ zusätzlich zur Schaltfläche (G155) oder beim Löschen eine Rückfrage vor der Aktion (G168).

Verwandte Kriterien: 3.3.1 und 3.3.3 fragen, wie gut die Meldung ist, wenn die Seite einen Fehler erkennt – für 3.3.4 zählt nur, dass geprüft wird und korrigiert werden kann. 3.3.7 greift, wenn beim Korrigieren Eingaben verloren gehen.

3.3.7 Redundante Eingabe

Stufe A, neu seit WCAG 2.2, Hintergrund beim W3C: Understanding 3.3.7 (englisch)

Was du in einem Prozess schon einmal eingegeben hast, musst du im selben Prozess nicht noch einmal eintippen: Die Seite belegt es vor oder bietet es zur Auswahl an. Ausnahmen: Die erneute Eingabe ist wesentlich, sie dient der Sicherheit, oder die frühere Angabe ist nicht mehr gültig.

So prüfst du: Geh den Prozess mit ausgedachten Daten durch: Lieferadresse, Rechnungsadresse, Übersicht. Achte auf zwei Stellen. Erstens: Musst du bei der Rechnungsadresse etwas erneut tippen, das du schon angegeben hast – oder kannst du es übernehmen? Zweitens: Im Prozess ist ein Fehler eingebaut – beim ersten „Weiter zur Übersicht“ meldet Schritt 2 eine Störung. Sind deine Eingaben danach noch da? Dasselbe kannst du selbst auslösen, wenn du eine Postleitzahl mit nur vier Ziffern eingibst. Reine Bedienung im Browser, auf Windows und Mac gleich. Ignoriere dabei Vorschläge deines Browsers: Füllt der Browser die Felder, sagt das nichts über die Seite.

Beispiel A

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Medien nach Hause liefern lassen
Schritt 1 von 3: Lieferadresse

Alle Felder sind Pflichtfelder.

5 Ziffern

Beispiel B

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Medien nach Hause liefern lassen
Schritt 1 von 3: Lieferadresse

Alle Felder sind Pflichtfelder.

5 Ziffern

Beispiel C

Neues Passwort für das Büchereikonto

Beide Felder sind Pflichtfelder.

Mindestens 12 Zeichen

Gib nur ein ausgedachtes Passwort ein. Es wird nichts gespeichert.

Auflösung zu 3.3.7
  • Beispiel A – nicht erfüllt. Zwei Befunde. Erstens verlangt Schritt 2 Name, Straße, Postleitzahl und Ort ein zweites Mal, ohne dass sich die Lieferadresse übernehmen oder auswählen lässt. Zweitens sind nach der eingebauten Störungsmeldung alle Felder der Rechnungsadresse leer, obwohl an den Eingaben nichts auszusetzen war; dasselbe passiert nach jeder Fehlermeldung, etwa bei einer vierstelligen Postleitzahl. Jede doppelte Eingabe kostet Menschen mit motorischen Einschränkungen Kraft und Zeit, und sie fordert das Gedächtnis: Wer sich Angaben schwer merkt oder mit Spracheingabe, Bildschirmtastatur oder Screenreader arbeitet, macht beim zweiten Mal leichter Fehler.
  • Beispiel B – erfüllt. In Schritt 2 trägt „Lieferadresse übernehmen“ die Angaben aus Schritt 1 ein; sie bleiben änderbar, falls die Rechnung woandershin soll. Eine Statusmeldung sagt, was passiert ist. Nach der eingebauten Störungsmeldung, nach jeder Fehlermeldung und beim Zurückgehen bleiben alle Eingaben stehen (Technik G221).
  • Beispiel C – erfüllt (Ausnahme Sicherheit). Das neue Passwort wird zweimal verlangt. Weil es verdeckt eingegeben wird, kann man einen Tippfehler nicht sehen; die Wiederholung schützt davor, sich auszusperren. Das Understanding zu 3.3.7 nennt genau diesen Fall als erlaubt.

Die Schaltflächen „zurücksetzen“ gehören zur Übungsseite, nicht zum Prozess.

Automatisch erkennbar? Nein. Die Werkzeuge gehen keinen Prozess durch; axe meldet in diesem Abschnitt nichts.

Grenzfall: „Mein Browser füllt das doch aus“ zählt nicht – das Understanding schließt die Autovervollständigung des Browsers ausdrücklich aus, die Seite selbst muss die Angaben bereitstellen. Das Kriterium gilt nur innerhalb eines Prozesses und einer Sitzung; ein Prozess kann aber über mehrere Seiten oder einen fremden Zahlungsdienst laufen. Weitere Ausnahmen: Die Wiederholung ist wesentlich (Merkspiel), oder die frühere Angabe gilt nicht mehr (abgelaufener Einmalcode). Lädt jemand dieselben Angaben in anderer Form hoch, etwa als Dokument, ist das keine erneute Eingabe im Sinn des Kriteriums.

Verwandte Kriterien: 3.3.4: Führt „Ändern“ in einer Übersicht an den Anfang und alles ist weg, ist das ein Befund zu 3.3.7, nicht zu 3.3.4. 1.3.5: Die autocomplete-Angaben (hier in A und B gesetzt) helfen dem Browser beim Ausfüllen, ersetzen 3.3.7 aber nicht. Neu seit WCAG 2.2 – im Prüfprotokoll vermerken.

3.3.8 Barrierefreie Authentifizierung (Minimum)

Stufe AA, neu seit WCAG 2.2, Hintergrund beim W3C: Understanding 3.3.8 (englisch)

Beim Anmelden darf kein Schritt verlangen, dass du dir etwas merkst, etwas abtippst, rechnest oder ein Rätsel löst – außer es gibt einen anderen Weg ohne solchen Test oder eine Hilfe dabei, etwa Passwortmanager und Einfügen aus der Zwischenablage. Auf Stufe AA sind zwei Tests erlaubt: Objekte erkennen und eigene Inhalte wiedererkennen.

So prüfst du: Kopiere einen ausgedachten Text wie Test-Passwort-123 (Strg + C, am Mac Cmd + C) und füge ihn in das Passwortfeld ein (Strg + V bzw. Cmd + V): Kommt er an? Bietet dein Browser oder Passwortmanager an, Zugangsdaten einzutragen? Gibt es ein Rätsel, eine Rechenaufgabe, Zeichen zum Abtippen? Wenn ja: Welche Alternative oder Hilfe gibt es? Im Code (Feld untersuchen) lohnt der Blick auf autocomplete und auf Ereignis-Attribute am Feld. Der praktische Test genügt für das Urteil.

Beispiel A

Am Büchereikonto anmelden

Beispiel B

Am Büchereikonto anmelden

Beispiel C

Am Büchereikonto anmelden

Beispiel D

Am Büchereikonto anmelden

Beispiel E

Nachricht an die Stadtbücherei

Für dieses Formular brauchst du kein Konto.

Wähle alle Bilder mit Bussen (Pflicht)

Auflösung zu 3.3.8
  • Beispiel A – erfüllt. Ein Passwort zu wissen ist zwar ein kognitiver Funktionstest, aber hier gibt es die Hilfe dazu: Einfügen funktioniert, und die Felder sind mit autocomplete="username" und autocomplete="current-password" ausgezeichnet, sodass Browser und Passwortmanager sie füllen können (Technik H100). Mehr verlangt die Anmeldung nicht.
  • Beispiel B – nicht erfüllt. Sieht genauso aus, aber das Passwortfeld blockt das Einfügen (onpaste="return false;", ebenso das Hineinziehen), und Formular und Felder tragen autocomplete="off". Wer sein Passwort aus einem Passwortmanager kopiert, muss es jetzt abtippen oder auswendig wissen – eine Hürde vor allem für Menschen, denen Merken, Lesen oder fehlerfreies Schreiben schwerfällt (Fehlerbild F109). Manche Browser übergehen autocomplete="off" bei Anmeldefeldern; entscheidend ist deshalb der Einfügetest. Mitbetroffen: 1.3.5, weil der Eingabezweck der beiden Felder nicht mehr im Code steht.
  • Beispiel C – nicht erfüllt. Einfügen und Passwortmanager funktionieren wie in A. Dazu kommt aber eine Rechenaufgabe als Pflichtschritt. Rechnen ist ein kognitiver Funktionstest, es gibt keinen anderen Weg und keine Hilfe, und Objekterkennung ist es auch nicht. Ausgeschlossen werden zum Beispiel Menschen mit Rechenschwäche oder mit kognitiven Einschränkungen nach einem Schlaganfall.
  • Beispiel D – erfüllt (Alternative). Dieselbe Rechenaufgabe wie in C, aber daneben ein zweiter Weg: der Anmeldelink per E-Mail (Technik G218). Die eigene E-Mail-Adresse einzugeben gilt nicht als kognitiver Funktionstest. Ein Schritt mit Test ist zulässig, wenn es eine Anmeldung ohne Test gibt.
  • Beispiel E – 3.3.8 nicht anwendbar (Streitfall aus dem Kurs). Hier meldet sich niemand an; das Kriterium gilt nur für Schritte einer Authentifizierung. Das Bilderrätsel ist ein CAPTCHA und wird unter 1.1.1 geprüft: Die Alternativtexte nennen den Zweck („Rätselbild 1 von 6“), aber es fehlt eine Alternative für einen anderen Sinn, etwa ein Audio-CAPTCHA – 1.1.1 ist nicht erfüllt. Stünde dasselbe Rätsel in einer Anmeldung, wäre 3.3.8 über die Ausnahme Objekterkennung erfüllt, 1.1.1 gälte zusätzlich.

Automatisch erkennbar? Nein. Kein Werkzeug fügt etwas ein oder erkennt ein Rätsel; autocomplete="off" ist ein gültiger Wert und wird nicht beanstandet. axe meldet in diesem Abschnitt nichts.

Grenzfall: Ein Bestätigungscode in sechs Einzelfeldern ist erst dann ein Verstoß, wenn sich der ganze Code nicht einfügen lässt. Die Abfrage einzelner Zeichen („das 3. und 5. Zeichen deines Passworts“) kann kein Passwortmanager ausfüllen – ohne Alternative nicht erfüllt. Das Anlegen eines Kontos ist keine Authentifizierung: Ein CAPTCHA im Registrierungsformular ist ebenfalls ein Fall für 1.1.1.

Verwandte Kriterien: 3.3.9 Barrierefreie Authentifizierung (erweitert) ist Stufe AAA und nicht Teil des Prüfstandards; dort fallen die Ausnahmen Objekterkennung und eigene Inhalte weg. 3.3.7 regelt die Wiederholung von Eingaben, etwa „Passwort wiederholen“. Neu seit WCAG 2.2 – im Prüfprotokoll vermerken.

Prinzip 4: Robust

4.1.2 Name, Rolle, Wert

Stufe A, Kurstag 2. Hintergrund beim W3C: Understanding 4.1.2 (englisch)

Jedes Bedienelement gibt an Hilfsmittel weiter, wie es heißt (Name) und was es ist (Rolle). Was sich daran einstellen lässt – aufgeklappt, eingeschaltet, gewählter Wert –, ist ebenfalls auslesbar, und jede Änderung wird gemeldet.

So prüfst du: Steuere jedes Bedienelement mit dem Screenreader an und notiere, was angesagt wird: Name, Rolle, Zustand oder Wert. Bediene es dann einmal (Leertaste oder Enter, mit VoiceOver VO + Leertaste) und höre, ob der neue Zustand angesagt wird. Gegenprobe im Barrierefreiheitsbaum: Rechtsklick → „Untersuchen“ → Bereich „Barrierefreiheit“ (Chrome, Edge, Firefox; Safari zeigt Rolle und Name, aber nicht die Quelle des Namens). Ohne Installation: Windows-Sprachausgabe mit Edge oder VoiceOver mit Safari.

Einmal und nie wieder: 4.1.1 Syntaxanalyse (englisch: Parsing) ist in WCAG 2.2 entfallen. In älteren Prüflisten steht das Kriterium noch; für HTML gilt es dort als erfüllt. Deshalb beginnt Prinzip 4 auf dieser Seite mit 4.1.2.

Beispiel Akkordeon – Fassung A

Beispiel Akkordeon – Fassung B

Beispiel Umschalter – Fassung A

Beispiel Umschalter – Fassung B

Beispiel Symbol-Schaltfläche – Fassung A

Beispiel Symbol-Schaltfläche – Fassung B

Beispiel Auswahlliste – Fassung A

Beispiel Auswahlliste – Fassung B

Abholort
Hauptstelle

Beispiel Link „Programm“ – Fassung A

Fachtagung „Lesen im Quartier“ am 14. November in der Hauptstelle

Programm

Beispiel Link „Programm“ – Fassung B

Fachtagung „Lesen im Quartier“ am 14. November in der Hauptstelle

Programm

Zu den beiden Links „Programm“: In dieser Übung ist kein PDF hinterlegt. Die Links führen nur zu diesem Hinweis.

Beispiel „Mein Konto“ – Fassung B

Stadtbücherei Lindenau Mein Konto

Beispiel „Lesetipp anzeigen“

Beispiel eingebetteter Lageplan – Fassung A

Beispiel eingebetteter Lageplan – Fassung B

Auflösung zu 4.1.2

Übung „Hör hin – schreib mit“: Bei vier der acht Fassungen fehlt etwas.

  • Akkordeon, Fassung A – erfüllt. Soll und Ist stimmen überein: Name „Ausweis verlängern“ aus dem Inhalt, Rolle Schaltfläche, Zustand reduziert. Nach dem Bedienen wird „erweitert“ angesagt, weil das Skript aria-expanded von false auf true setzt.
  • Akkordeon, Fassung B – nicht erfüllt. Name und Rolle stimmen, der Zustand fehlt: kein aria-expanded. Vor und nach dem Bedienen wird dasselbe angesagt. Wer nicht sieht, erfährt nicht, ob der Abschnitt offen ist und ob das Bedienen überhaupt etwas bewirkt hat.
  • Umschalter, Fassung A – nicht erfüllt. Die Rolle Umschalter ist gesetzt (role="switch"), aber aria-checked fehlt. Der Browser behandelt den fehlenden Wert wie „aus“ und meldet dauerhaft diesen Zustand. Beim Einschalten wechseln nur Farbe, Griff und das Wort „Ein“ – und dieses Wort ist mit aria-hidden="true" vor Hilfsmitteln versteckt. Die Ansage bleibt nach dem Bedienen gleich.
  • Umschalter, Fassung B – erfüllt. Name „Erinnerung vor Ablauf der Leihfrist“, Rolle Umschalter, Zustand aus; nach dem Bedienen ein. Das Skript setzt aria-checked mit um. Die Wörter „Ein“ und „Aus“ sind auch hier versteckt, damit sie nicht in den Namen geraten; den Zustand liefert aria-checked.
  • Symbol-Schaltfläche, Fassung A – nicht erfüllt. Die Rolle Schaltfläche ist da, der Name ist leer: Die Lupe ist mit aria-hidden="true" versteckt, sonst enthält die Schaltfläche nichts (Failure F68). Angesagt wird nur „Schalter“ oder „Taste“. Per Sprachsteuerung lässt sich die Schaltfläche nicht beim Namen nennen. Damit ist auch 1.1.1 nicht erfüllt.
  • Symbol-Schaltfläche, Fassung B – erfüllt. Name „Suche“ aus dem aria-label, Rolle Schaltfläche. Einen Zustand hat diese Schaltfläche nicht.
  • Auswahlliste, Fassung A – erfüllt. Ein select mit label: Name „Abholort“, Rolle Kombinationsfeld (VoiceOver: Einblendmenü), dazu der gewählte Wert. Jede Änderung wird angesagt. Die Gestaltung kommt allein aus dem CSS.
  • Auswahlliste, Fassung B – nicht erfüllt. Die Liste ist aus div-Elementen gebaut (Failure F59). Es gibt keine Rolle, keinen Namen und keinen Zustand; „Abholort“ steht nur als Text daneben. Angesagt wird nur der Text „Hauptstelle“. Ob die Liste offen ist und welcher Eintrag gewählt wird, bleibt stumm. Die Tastatur funktioniert hier absichtlich (Tab, Enter, Pfeiltasten), damit nur 4.1.2 betroffen ist. Mit eingeschaltetem Screenreader nützt das wenig: Ohne Rolle wechselt er in der Regel nicht in den Fokusmodus, und die Pfeiltasten kommen beim Element nicht an. Verletzt außerdem 1.3.1: Die Beschriftung ist nicht mit dem Bedienelement verknüpft.

Die Streitfälle des Kurstags:

  • Link „Programm“, Fassung A – 4.1.2 erfüllt, 2.5.3 nicht erfüllt. Das aria-label „PDF der Fachtagung herunterladen“ überschreibt den Linktext vollständig. Name und Rolle sind da. Der sichtbare Text „Programm“ kommt im Namen aber nicht vor: „Klick auf Programm“ findet per Sprachsteuerung nichts (2.5.3, Failure F96). Lighthouse meldet diese Stelle, axe mit den Standardregeln nicht.
  • Link „Programm“, Fassung B – 4.1.2 erfüllt, 2.5.3 erfüllt. Der Name „Programm der Fachtagung als PDF herunterladen“ beginnt mit dem sichtbaren Text. Kursposition zur Frage „besser oder schlechter als ohne aria-label?“: Es kommt darauf an, wie der Name gebaut ist – mit Tendenz zu schlechter. Nachteile bleiben: Wer den Screenreader nutzt und zugleich sieht, hört andere Worte, als zu lesen sind; bei Textänderungen wird das aria-label gern vergessen. Besser ist es, den sichtbaren Text zu erweitern, etwa „Programm (PDF)“.
  • „Mein Konto“, Fassung A – erfüllt. Ein Link mit role="button", der ein Menü aufklappt, auf Enter und Leertaste reagiert und seinen Zustand über aria-expanded meldet. Die Rolle Schaltfläche beschreibt zutreffend, was das Element tut. Übrig bleibt ein Verstoß gegen die erste Regel von ARIA (ein button hätte es auch getan) – das ist kein Verstoß gegen die WCAG.
  • „Mein Konto“, Fassung B – nicht erfüllt (gut vertretbar). Derselbe Link mit role="button", aber er führt zur Kontoseite. Angesagt wird „Mein Konto, Schalter“; im Baum steht button. Die Rolle ist ermittelbar, beschreibt das Element aber unzutreffend: Es navigiert, also ist es ein Link. Folgen: Es fehlt in der Linkliste des Screenreaders, und wer „Schalter“ hört, erwartet, dass die Leertaste funktioniert – bei einem Link tut sie das nicht, sie blättert stattdessen die Seite weiter. Manche Prüfende bewerten solche Rollenkonflikte milder; beschreibe im Befund deshalb immer die Folge, nicht nur „unpassende Rolle“.
  • „Lesetipp anzeigen“ – erfüllt (Grenzfall). Im Code steht role="presentation" auf einem echten button. Der Browser ignoriert die Angabe, weil das Element fokussierbar ist: Im Baum steht weiter Schaltfläche mit dem Namen „Lesetipp anzeigen“. Ein Befund zu 4.1.2 ist das nicht, eine Empfehlung schon: Attribut entfernen.

Eingebettete Rahmen:

  • Lageplan, Fassung A – nicht erfüllt. Dem iframe fehlt das title-Attribut und damit der Name. Je nach Screenreader wird nur „Rahmen“ angesagt oder ersatzweise ein Dateiname oder der Seitentitel des eingebetteten Dokuments vorgelesen. Wer Rahmen überspringen oder gezielt ansteuern will, weiß nicht, was darin steckt.
  • Lageplan, Fassung B – erfüllt. title="Lageplan der Stadtbücherei Lindenau" gibt dem Rahmen einen Namen, der den Inhalt beschreibt (Technik H64). Der Inhalt des Rahmens muss die Kriterien selbst erfüllen; das title des iframe ist nur der Name des Rahmens.

Automatisch erkennbar? Teilweise. axe-core meldet auf dieser Seite drei Stellen: die Symbol-Schaltfläche in Fassung A (Schaltfläche ohne Namen), den Umschalter in Fassung A (Pflichtattribut aria-checked fehlt) und den Lageplan in Fassung A (Rahmen ohne Titel). Nichts gemeldet wird zum Akkordeon in Fassung B, zur Auswahlliste in Fassung B und zu „Mein Konto“ in Fassung B: Ob ein Zustand fehlt, ob ein div ein Bedienelement ist und ob eine Rolle zur Funktion passt, entscheidet kein Werkzeug. Sind in axe die „Best Practices“ eingeschaltet, kommen zwei Hinweise zu „Lesetipp anzeigen“ dazu (Rolle passt nicht zum Element). Lighthouse meldet mehr als axe mit den Standardregeln: zusätzlich den Link „Programm“ in Fassung A (sichtbare Beschriftung fehlt im Namen – in axe nur eine experimentelle, ab Werk ausgeschaltete Regel) und „Lesetipp anzeigen“.

Grenzfall: Beim Umschalter stehen die Wörter „Aus“ und „Ein“ sichtbar in der Schaltfläche, gehören aber nicht zum Namen. Das ist kein Fall für 2.5.3: Sie zeigen den Zustand an, nicht die Beschriftung, und der Name beginnt mit dem sichtbaren Beschriftungstext. Ist ein Name vorhanden, aber nichtssagend („Schalter 1“), ist 4.1.2 in der Regel erfüllt. Die Qualität des Namens prüfst du bei 2.4.6, 2.4.4 und 1.1.1. Unterschiedliche Wörter je Screenreader sind kein Befund: NVDA sagt „Schalter“, VoiceOver „Taste“ – beides ist die Rolle Schaltfläche. Wie dein Screenreader einen Umschalter nennt und seinen Zustand ansagt, notierst du einmal; danach vergleichst du nur noch Fassung A mit Fassung B.

Verwandte Kriterien: 2.1.1 (lässt sich das Bedienelement mit der Tastatur bedienen?), 2.5.3 (steht der sichtbare Text im Namen?), 1.3.1 (ist die Beschriftung verknüpft?), 4.1.3 (Meldungen, die ohne Fokuswechsel erscheinen).

4.1.3 Statusmeldungen

Stufe AA, Hintergrund beim W3C: Understanding 4.1.3 (englisch)

Meldungen, die erscheinen, ohne dass der Fokus dorthin springt – Ergebnis einer Aktion, Wartezustand, Fortschritt, Hinweis auf Fehler –, müssen so ausgezeichnet sein, dass ein Screenreader sie ansagen kann, ohne dass der Fokus dorthin muss.

So prüfst du: Screenreader einschalten, Aktion auslösen, den Fokus stehen lassen und hinhören: Wird die Meldung angesagt? VoiceOver sagt Statusmeldungen manchmal verzögert an – warte kurz, bevor du „nichts“ notierst. Gegenprobe ohne Screenreader: Rechtsklick auf die Meldung → „Untersuchen“. Hat das Element eine Rolle wie status, alert oder log oder ein aria-live-Attribut – und stand es schon auf der Seite, bevor der Text hineinkam? Ohne Installation: Windows-Sprachausgabe mit Edge oder VoiceOver mit Safari.

Beispiel A: Terminsuche

Termine im November

12 Termine gefunden

  • Di., 03.11., 16:00 Uhr Vorlesestunde für Kinder (vor Ort)
  • Mi., 04.11., 18:00 Uhr Einführung in die Onleihe (online)
  • Do., 05.11., 10:00 Uhr Sprechstunde Ausweis und Konto (vor Ort)
  • Fr., 06.11., 15:00 Uhr Spielenachmittag (vor Ort)
  • Di., 10.11., 17:00 Uhr Lesekreis Krimi (vor Ort)
  • Mi., 11.11., 18:30 Uhr Recherche in Datenbanken (online)
  • Do., 12.11., 19:00 Uhr Lesung „Das Haus am Lindenweiher“ (vor Ort)
  • Sa., 14.11., 11:00 Uhr Bilderbuchkino (vor Ort)
  • Di., 17.11., 16:00 Uhr Vorlesestunde für Kinder (vor Ort)
  • Mi., 18.11., 18:00 Uhr Fragestunde E-Books (online)
  • Do., 19.11., 10:00 Uhr Führung durch die Bücherei (vor Ort)
  • Fr., 20.11., 15:00 Uhr Schreibwerkstatt (vor Ort)

Beispiel B: Terminsuche

Termine im November

12 Termine gefunden

  • Di., 03.11., 16:00 Uhr Vorlesestunde für Kinder (vor Ort)
  • Mi., 04.11., 18:00 Uhr Einführung in die Onleihe (online)
  • Do., 05.11., 10:00 Uhr Sprechstunde Ausweis und Konto (vor Ort)
  • Fr., 06.11., 15:00 Uhr Spielenachmittag (vor Ort)
  • Di., 10.11., 17:00 Uhr Lesekreis Krimi (vor Ort)
  • Mi., 11.11., 18:30 Uhr Recherche in Datenbanken (online)
  • Do., 12.11., 19:00 Uhr Lesung „Das Haus am Lindenweiher“ (vor Ort)
  • Sa., 14.11., 11:00 Uhr Bilderbuchkino (vor Ort)
  • Di., 17.11., 16:00 Uhr Vorlesestunde für Kinder (vor Ort)
  • Mi., 18.11., 18:00 Uhr Fragestunde E-Books (online)
  • Do., 19.11., 10:00 Uhr Führung durch die Bücherei (vor Ort)
  • Fr., 20.11., 15:00 Uhr Schreibwerkstatt (vor Ort)

Beispiel C: Merkliste

Merkliste: 0 Titel

Das Haus am Lindenweiher

Roman · Buch · verfügbar in der Hauptstelle

Beispiel D: Ausweis verlängern

8 Ziffern, zum Beispiel 00012345

Sende das Formular einmal leer ab.

Beispiel E: Feld „E-Mail“

Benachrichtigung einrichten

Tippe eine Adresse ohne @ ein und gehe mit Tab ins nächste Feld.

Beispiel F: Feld „E-Mail“

Benachrichtigung einrichten

Tippe eine Adresse ohne @ ein und gehe mit Tab ins nächste Feld.

Auflösung zu 4.1.3
  • Beispiel A – nicht erfüllt. Nach dem Anhaken ändert sich die Trefferzahl sichtbar von 12 auf 3. Angesagt wird nur der neue Zustand des Kontrollkästchens. Die Trefferzahl ist das Ergebnis einer Aktion, also eine Statusmeldung, steht aber in einem gewöhnlichen Absatz ohne Rolle (Failure F103). Wer nicht sieht, erfährt nicht, ob der Filter gewirkt hat und wie viel übrig ist.
  • Beispiel B – erfüllt. Gleiche Seite, gleiche Handlung – jetzt wird „3 Termine gefunden“ angesagt. Die Trefferzahl steht in einem Element mit role="status" (Technik ARIA22). Das Element ist von Anfang an auf der Seite; das Skript tauscht nur den Text. Der Fokus bleibt auf dem Kontrollkästchen.
  • Beispiel C – nicht erfüllt. Der Fall „In den Warenkorb gelegt“ in der Bücherei: Unter der Schaltfläche erscheint „… steht jetzt auf deiner Merkliste“, oben springt der Zähler auf „1 Titel“. Beides sind Statusmeldungen, beide ohne Rolle und ohne aria-live (F103). Mit dem Screenreader auf der Schaltfläche hörst du nach dem Auslösen nichts.
  • Beispiel D – erfüllt; die Fehlerübersicht ist kein Fall für 4.1.3. Nach dem Absenden erscheint die Übersicht „Bitte prüfe deine Angaben“, und das Skript setzt den Fokus darauf. Die Meldung erreicht die Nutzenden über den Fokus; eine Statusmeldung im Sinn des Kriteriums ist sie damit nicht. Erst wenn alles stimmt, erscheint die Bestätigung ohne Fokuswechsel – und die steht in einem Element mit role="status".
  • Beispiel E – erfüllt. Der Fehlertext erscheint beim Verlassen des Felds in einem Element mit role="alert", das schon vorher leer auf der Seite stand (Technik ARIA19). Er wird angesagt, obwohl der Fokus im nächsten Feld steht. role="status" hätte ebenfalls genügt und wäre höflicher: alert unterbricht die laufende Ansage.
  • Beispiel F – nicht erfüllt. Der Streitfall aus dem Kurs: Der Text erscheint rot unter dem Feld, der Fokus steht im nächsten Feld, es gibt keine Rolle und kein aria-live. Die Definition der Statusmeldung nennt ausdrücklich Hinweise auf Fehler; der Text erscheint ohne Fokuswechsel und ändert den Kontext nicht. Also ist es eine Statusmeldung, die nicht angesagt werden kann. Kursposition: Im Grundsatz „kommt darauf an, wann und wie der Text erscheint“ – in diesem Fall nicht erfüllt.

Ein Befund, drei Kriterien (Beispiele E und F): 3.3.1 fragt, ob der Fehler in Textform benannt wird – in beiden Beispielen ja. 1.3.1 und 4.1.2 fragen, ob der Text mit dem Feld verknüpft ist – in beiden Beispielen ja: aria-describedby und aria-invalid sind gesetzt, wer ins Feld zurückgeht, hört den Text. 4.1.3 fragt, ob der Text im Moment des Erscheinens angesagt werden kann – nur in Beispiel E. Urteile im Befund getrennt nach Kriterium. Ein viertes kommt an Tag 7 dazu: 3.3.3 fragt, ob die Meldung sagt, wie die Eingabe richtig aussieht – „Bitte gib eine gültige E-Mail-Adresse ein.“ nennt kein Muster. „Erfüllt“ bei Beispiel E heißt also: 4.1.3 erfüllt.

Automatisch erkennbar? Nein. axe-core meldet in keinem der sechs Beispiele etwas (auf dieser Seite geprüft). Ein Werkzeug weiß nicht, welcher Text eine Meldung ist, und die Meldungen entstehen erst nach einer Aktion.

Grenzfall: Lädt die Seite beim Filtern komplett neu, ist die Trefferzahl keine Statusmeldung mehr, sondern Teil einer neuen Seite – 4.1.3 greift nicht; löst ein Kontrollkästchen das Neuladen aus, prüfst du 3.2.2. Häufiger Fehler in der Praxis: Das Element mit der Rolle wird erst zusammen mit dem Text in die Seite gesetzt. Dann bemerken Screenreader die Meldung oft nicht – deshalb in zwei Kombinationen aus Browser und Screenreader prüfen. role="alert" für Erfolgsmeldungen ist kein Verstoß gegen 4.1.3, aber störend: als Empfehlung notieren.

Verwandte Kriterien: 3.3.1 (Fehler wird in Textform benannt), 3.2.2 (Eingabe löst keinen unerwarteten Kontextwechsel aus), 4.1.2 (Zustand des Bedienelements selbst, zum Beispiel „angehakt“).

Komponenten: mehrere Kriterien auf einmal

Typische Bausteine, jeweils in zwei Fassungen. Hier prüfst du nicht ein Kriterium, sondern legst eine Kreuzliste an: Welche Kriterien betrifft die Komponente, und welche davon sind in welcher Fassung erfüllt?

Akkordeon

Ein Akkordeon ist eine Folge von Überschriften, unter denen sich jeweils ein Inhaltsbereich auf- und zuklappen lässt. Beide Fassungen zeigen dieselben drei Fragen zum Büchereiausweis.

Aufgabe: Lege eine Kreuzliste an: je Zeile ein Kriterium, je Fassung ein Urteil (erfüllt, nicht erfüllt, nicht anwendbar) und ein Satz Beleg. Nimm mindestens sieben Kriterien auf, darunter eines, das nicht zum Grundgerüst gehört (1.3.1, 1.4.11, 2.1.1, 2.4.3, 2.4.7, 2.5.8, 4.1.2). Notiere außerdem, wie sich ein Akkordeon mit der Tastatur bedienen lassen sollte – und halte beide Fassungen dagegen.

So prüfst du: Bediene jede Fassung erst mit der Maus, dann nur mit der Tastatur (Tab, Umschalt + Tab, Enter, Leertaste) und achte darauf, wo der Fokus gerade steht. Am Mac vorher die Tastaturnavigation einschalten (Systemeinstellungen, Bereich „Tastatur“; in Safari zusätzlich in den Einstellungen unter „Erweitert“) – sonst überspringt Tab Links oder Schaltflächen. Sieh dir die Kopfzeilen im Barrierefreiheitsbaum an (Edge und Chrome: F12, Element untersuchen, Reiter „Barrierefreiheit“; Firefox: F12, Reiter „Barrierefreiheit“; Safari: Cmd + Wahltaste + I, Element wählen, Abschnitt „Barrierefreiheit“ – das Menü „Entwickler“ musst du in Safari erst in den Einstellungen unter „Erweitert“ einschalten): Rolle, Name, Zustand – und ändert sich der Zustand beim Aufklappen? Miss den Kontrast von Plus und Minus zur Kopfzeile. Farbwerte liest du in den Entwicklerwerkzeugen ab (Element untersuchen, Bereich „Stile“; Plus und Minus sind Pseudoelemente, klappe dafür ::before und ::after auf; dort steht currentColor, den Farbwert liest du am umgebenden Element oder unter „Berechnet“ ab) und gibst sie in einen Kontrastrechner ein – ohne Installation ein Rechner im Browser, sonst der Colour Contrast Analyser (Windows und Mac); der Prüfweg steht ausführlich bei 1.4.11. Mit Screenreader: Liste der Überschriften aufrufen, dann die Kopfzeilen bedienen. Ohne Entwicklerwerkzeuge: zu zweit, eine Person bedient, die andere protokolliert.

Fassung A

Was kostet der Ausweis?

Für Erwachsene kostet der Ausweis 12 Euro im Jahr. Kinder und Jugendliche bis 18 Jahre lesen kostenlos.

Wie verlängere ich den Ausweis?

Du verlängerst den Ausweis an der Theke oder selbst in deinem Konto. Die Verlängerung gilt für zwölf Monate.

Zur Verlängerung im Konto

Was mache ich, wenn der Ausweis weg ist?

Melde den Verlust sofort an der Theke oder unter 0000 123456. Ein Ersatzausweis kostet 3 Euro.

Fassung B

Für Erwachsene kostet der Ausweis 12 Euro im Jahr. Kinder und Jugendliche bis 18 Jahre lesen kostenlos.

Auflösung zum Akkordeon
  • Fassung A – nicht erfüllt (sechs Kriterien). Die Kopfzeilen sind div-Elemente mit einem Klick-Handler. Sie sind keine Überschriften, haben keine Rolle, melden keinen Zustand und lassen sich mit der Tastatur weder erreichen noch bedienen. Wer ohne Maus arbeitet, kommt an die zugeklappten Antworten nicht heran. Zugeklappt wird nur über max-height: 0: Der Link „Zur Verlängerung im Konto“ bleibt deshalb im Tab-Weg, auch wenn er nicht zu sehen ist, und Screenreader lesen alle drei Antworten vor, egal ob auf- oder zugeklappt. Fast alles geht auf eine Ursache zurück: div statt Überschrift mit button. Im Prüfbericht ist das ein Befund mit mehreren Kriterien, nicht sechs Befunde.
  • Fassung B – erfüllt. In jeder Überschrift (h5, passend zur Gliederung der Übungsseite) steckt ein button mit aria-expanded und aria-controls. Zugeklappte Bereiche tragen hidden und sind damit weder sichtbar noch fokussierbar noch im Barrierefreiheitsbaum.

Erwartetes Tastaturverhalten (Muster „Accordion“ im ARIA Authoring Practices Guide):

  • Tab und Umschalt + Tab erreichen jede Kopfzeile; der Fokus ist dabei sichtbar.
  • Enter oder Leertaste klappt den Bereich auf oder zu. Der Fokus bleibt auf der Kopfzeile.
  • Ist ein Bereich aufgeklappt, führt der nächste Tab in seinen Inhalt (hier: zum Link im zweiten Bereich), danach zur nächsten Kopfzeile.
  • Zugeklappte Inhalte werden von Tab übersprungen.
  • Der Screenreader sagt Überschrift, Schaltfläche und Zustand an, sinngemäß „Was kostet der Ausweis?, Schaltfläche, erweitert“ – der genaue Wortlaut hängt vom Screenreader ab (NVDA sagt „Schalter“, VoiceOver „Taste“).
  • Mehr Tasten verlangt das Muster nicht. Ältere Fassungen nannten Pfeil runter, Pfeil hoch, Pos1 und Ende als optional; im heutigen Muster stehen sie nicht mehr (Stand Oktober 2026). Fassung B hat sie nicht – kein Verstoß. Fehlten Enter und Leertaste, wäre 2.1.1 nicht erfüllt.

Kreuzliste:

Kreuzliste Akkordeon: Kriterien und Urteil je Fassung
KriteriumFassung AFassung B
1.3.1 Info und Beziehungennicht erfüllt – die Fragen sehen aus wie Überschriften, sind aber div; in der Überschriftenliste des Screenreaders fehlen sieerfüllt – h5 unter der h4 „Fassung B“
1.4.3 Kontrast (Minimum)erfüllt – Text 14,3:1 auf der Kopfzeile, 15,7:1 im Bereicherfüllt – wie A
1.4.10 Umfluss (Reflow)erfüllt – bei 320 CSS-Pixel bricht der Text um, nichts wird abgeschnittenerfüllt – wie A
1.4.11 Nicht-Text-Kontrastnicht erfüllt – Plus und Minus sind der einzige sichtbare Hinweis, dass sich die Zeile aufklappen lässt, und haben nur 1,8:1 (#b4bac4 auf #f2f4f7)erfüllt – Plus und Minus 14,3:1, Fokusrahmen deutlich über 3:1
2.1.1 Tastaturnicht erfüllt – Kopfzeilen nicht fokussierbar, keine Tastenbedienung; zugeklappte Antworten ohne Maus nicht erreichbarerfüllt – Tab, Enter, Leertaste
2.4.3 Fokus-Reihenfolgenicht erfüllt – der Link im zugeklappten zweiten Bereich bekommt den Fokus, obwohl er unsichtbar isterfüllt – zugeklappte Inhalte sind hidden; aufgeklappte folgen direkt auf ihre Kopfzeile
2.4.7 Fokus sichtbarnicht erfüllt – steht der Fokus auf dem unsichtbaren Link, ist nirgends ein Fokusrahmen zu sehen (manche Prüfende werten das allein bei 2.4.3)erfüllt – Fokusrahmen an Kopfzeilen und Link
2.5.8 Zielgröße (Minimum)erfüllt – die ganze Kopfzeile ist klickbar und mindestens 44 CSS-Pixel hocherfüllt – wie A
4.1.2 Name, Rolle, Wertnicht erfüllt – keine Rolle, kein Zustand; im Barrierefreiheitsbaum steht nur Texterfüllt – Rolle Schaltfläche, Name aus dem Text, aria-expanded wechselt zwischen true und false

Automatisch erkennbar? Nein. axe meldet in Fassung A nichts: Ein div mit Klick-Handler ist für ein Werkzeug nur ein div, und der Kontrast des Plus-Zeichens (ein Pseudoelement) wird nicht gemessen. Alle Befunde findest du nur mit Tastatur, Barrierefreiheitsbaum und Kontrastmesser.

Grenzfall: aria-controls gehört zum Muster, wird von Screenreadern aber uneinheitlich genutzt. Fehlt es, ist das eine Abweichung vom Muster, kein Verstoß gegen 4.1.2. Dasselbe gilt für role="region" am Inhaltsbereich: im Muster optional, hier weggelassen, damit nicht mit jedem aufgeklappten Bereich eine weitere Landmarke entsteht.

Verwandte Kriterien: Würde der offene Zustand nur über eine andere Farbe der Kopfzeile gezeigt, käme 1.4.1 dazu. Wäre nur das kleine Plus-Zeichen klickbar, müsstest du für 2.5.8 nachmessen – ein einzeln stehendes kleines Ziel kann über die Abstandsregel trotzdem bestehen.

Modaler Dialog

Ein modaler Dialog legt sich über die Seite und verlangt eine Entscheidung, bevor es weitergeht. Beide Fassungen zeigen dieselbe Raumreservierung; die Schaltfläche „Reservierung löschen“ öffnet eine Rückfrage.

Aufgabe: Lege eine Kreuzliste an: je Zeile ein Kriterium, je Fassung ein Urteil (erfüllt, nicht erfüllt, nicht anwendbar) und ein Satz Beleg. Nimm mindestens sieben Kriterien auf, darunter eines, das nicht zum Grundgerüst gehört (1.3.1, 1.4.11, 2.1.1, 2.4.3, 2.4.7, 2.5.8, 4.1.2). Notiere außerdem, wo der Fokus beim Öffnen, während der Bedienung und nach dem Schließen stehen sollte – und halte beide Fassungen dagegen.

So prüfst du: Öffne den Dialog mit der Tastatur (Tab zur Schaltfläche, Enter) und sprich jeden Fokuswechsel laut mit: Wo steht der Fokus nach dem Öffnen? Wohin führen Tab und Umschalt + Tab? Was macht Esc? Wo steht der Fokus nach dem Schließen? Am Mac vorher die Tastaturnavigation einschalten (Systemeinstellungen, Bereich „Tastatur“; in Safari zusätzlich in den Einstellungen unter „Erweitert“) – sonst überspringt Tab Links oder Schaltflächen. Tipp: Gib in der Konsole der Entwicklerwerkzeuge document.activeElement ein, wenn du den Fokus nicht siehst. Untersuche den geöffneten Dialog im Barrierefreiheitsbaum: Rolle, Name, Schaltflächen. Miss die Schließen-Schaltfläche (Element untersuchen, Box-Modell). Prüfe auch bei 320 CSS-Pixel Breite oder 400 % Zoom. Mit Screenreader: Was wird beim Öffnen angesagt, was nach „Löschen“?

Fassung A

Deine Reservierung

Gruppenraum 2 · Donnerstag, 15. Oktober · 16 bis 18 Uhr

Reservierung löschen?

Gruppenraum 2 am Donnerstag, 15. Oktober, 16 bis 18 Uhr. Der Raum wird sofort wieder für andere freigegeben.

Der Dialog lässt sich über jede seiner drei Schaltflächen wieder schließen.

Fassung B

Deine Reservierung

Gruppenraum 2 · Donnerstag, 15. Oktober · 16 bis 18 Uhr

Der Dialog lässt sich über jede seiner drei Schaltflächen wieder schließen.

Auflösung zum modalen Dialog
  • Fassung A – erfüllt. Ein natives dialog-Element, geöffnet mit showModal(): Rolle „Dialog“, Name über aria-labelledby aus dem Titel, Beschreibung über aria-describedby. Der Browser macht den Rest der Seite unbedienbar (inert), schließt bei Esc und setzt den Fokus danach zurück auf die auslösende Schaltfläche. Die Schließen-Schaltfläche heißt „Schließen“ und misst 44 × 44 CSS-Pixel. Die Meldung nach dem Löschen steht in einem Element mit role="status".
  • Fassung B – nicht erfüllt (fünf Kriterien). Der Dialog ist ein div ohne Rolle und ohne Namen, der Titel ein div statt einer Überschrift. Beim Öffnen bleibt der Fokus auf „Reservierung löschen“ hinter dem Dialog; Tab läuft erst durch die beiden Links im Hintergrund, bevor er den Dialog erreicht, und danach weiter durch die Seite. Nach dem Schließen ist der Fokus weg (document.activeElement ist body) – der nächste Tab beginnt je nach Browser am Seitenanfang oder an der Stelle, an der der Dialog im Code stand, jedenfalls nicht auf dem Auslöser. Die Schließen-Schaltfläche enthält nur ein Symbol ohne Textalternative; der Screenreader sagt bloß „Schaltfläche“. Die Meldung „Die Reservierung wurde gelöscht.“ wird nicht angesagt. Wer nicht sieht, merkt weder, dass ein Dialog aufgegangen ist, noch, was er gerade bestätigt hat.

Erwartetes Tastaturverhalten (Muster „Dialog (Modal)“ im ARIA Authoring Practices Guide):

  • Beim Öffnen springt der Fokus in den Dialog. Hier steht er auf „Abbrechen“ – bei einer Aktion, die sich schlecht zurücknehmen lässt, empfiehlt das Muster die harmloseste Schaltfläche als Startpunkt.
  • Tab und Umschalt + Tab bleiben im Dialog: Nach der letzten Schaltfläche geht es bei der ersten weiter und umgekehrt. Der Hintergrund ist weder per Tastatur noch per Maus noch im Lesemodus des Screenreaders erreichbar.
  • Esc schließt den Dialog, ohne etwas auszulösen.
  • Nach dem Schließen steht der Fokus wieder auf der Schaltfläche, die den Dialog geöffnet hat.
  • Der Screenreader sagt beim Öffnen Rolle und Titel an, sinngemäß „Reservierung löschen?, Dialog“.

Kreuzliste:

Kreuzliste Dialog: Kriterien und Urteil je Fassung
KriteriumFassung AFassung B
1.1.1 Nicht-Text-Inhalterfüllt – das Kreuz ist mit aria-hidden ausgeblendet, die Schaltfläche heißt „Schließen“nicht erfüllt – das Kreuz ist der einzige Inhalt der Schaltfläche und hat keine Textalternative (dieselbe Ursache wie bei 4.1.2)
1.3.1 Info und Beziehungenerfüllt – Titel als Überschrift und über aria-labelledby mit dem Dialog verknüpftnicht erfüllt – der Titel ist nur fett gesetzter Text, ohne Überschrift und ohne Bezug zum Dialog
1.4.10 Umfluss (Reflow)erfüllt – bei 320 CSS-Pixel passt der Dialog ins Fenster, alle Schaltflächen bleiben erreichbarerfüllt – wie A
1.4.11 Nicht-Text-Kontrasterfüllt – Kreuz 15,7:1 auf Weiß, Schaltflächenränder und Fokusrahmen über 3:1erfüllt – wie A
2.1.1 Tastaturerfüllt – alles mit Tab, Enter, Leertaste, Escerfüllt – alle drei Schaltflächen sind echte button und per Tab erreichbar, wenn auch auf einem Umweg. Dass Esc fehlt, ist eine Abweichung vom Muster, kein Verstoß
2.1.2 Keine Tastaturfalleerfüllt – der Fokus wird im Dialog gehalten, aber Esc und drei Schaltflächen führen hinauserfüllt – der Fokus wird nirgends festgehalten
2.4.3 Fokus-Reihenfolgeerfüllt – Fokus hinein, im Dialog gehalten, zurück zum Auslösernicht erfüllt – Fokus bleibt hinter dem Dialog, Hintergrund per Tab erreichbar, nach dem Schließen ist der Fokus verloren
2.4.7 Fokus sichtbarerfüllterfüllt – der Fokusrahmen ist an jedem Element vorhanden; ob er hinter dem Dialog liegt, ist eine Frage von 2.4.11 – siehe Grenzfall
2.5.8 Zielgröße (Minimum)erfüllt – Schließen-Schaltfläche 44 × 44 CSS-Pixelerfüllt über die Abstandsregel – die Schließen-Schaltfläche misst nur 18 × 18 CSS-Pixel, aber im Kreis mit 24 CSS-Pixel Durchmesser um ihren Mittelpunkt liegt kein anderes Ziel
4.1.2 Name, Rolle, Werterfüllt – Rolle Dialog, Name „Reservierung löschen?“, als modal ausgewiesen; Schaltfläche „Schließen“nicht erfüllt – Dialog ohne Rolle und Name; Schließen-Schaltfläche ohne Namen
4.1.3 Statusmeldungenerfüllt – Meldung nach dem Löschen in role="status"nicht erfüllt – die Meldung erscheint nur sichtbar, ohne Rolle und ohne Fokuswechsel

Automatisch erkennbar? Teilweise. axe meldet in Fassung B genau eine Stelle: die Schaltfläche ohne Namen (button-name) – und auch die erst, wenn der Dialog beim Prüflauf geöffnet ist. Fehlende Rolle, Fokusführung und die stumme Meldung findet kein Werkzeug. In Fassung A meldet axe nichts, weder geschlossen noch geöffnet.

Grenzfall Hintergrund: In Fassung B liest der Screenreader im Lesemodus die Seite hinter dem Dialog weiter. Die Zuordnung ist in der Prüfpraxis nicht einheitlich – meist 1.3.2 oder 4.1.2 (der Dialog ist nicht als modal ausgewiesen). Notiere es als Befund mit Beleg und begründe das gewählte Kriterium.

Grenzfall verdeckter Fokus: Liegt in Fassung B ein fokussiertes Element des Hintergrunds vollständig hinter dem Dialogfeld (bei schmalem Fenster trifft das den Auslöser), sieht das nach 2.4.11 aus. Das Kriterium nimmt aber Inhalt aus, den du selbst geöffnet hast, wenn sich das fokussierte Element freilegen lässt, ohne den Fokus weiterzubewegen – hier durch Scrollen mit den Pfeiltasten: Die Seite wandert unter der fest stehenden Schicht weiter. 2.4.11 ist deshalb erfüllt; der Befund bleibt bei 2.4.3. Anders wäre es bei einer Schicht, die ohne dein Zutun erscheint, etwa einem Cookie-Banner. Zweite Lesart zum Diskutieren: Ist der Fokusrahmen selbst vollständig verdeckt, fällt das laut den Erläuterungen des W3C zu 2.4.11 wahrscheinlich unter 2.4.7.

Für Fortgeschrittene: Der Fokusrahmen der Hintergrund-Elemente liegt in Fassung B unter der halbdurchsichtigen Schicht. 1.4.11 ist in diesem Zustand zu messen, also mit den abgedunkelten Farben: Der Rahmen (#382060) hat zur abgedunkelten weißen Karte (#737b89) noch 3,2:1 – knapp bestanden.

Grenzfall Zielgröße: Ein einzeln stehendes kleines Kreuz besteht 2.5.8 über die Abstandsregel. Stünde direkt daneben ein zweites kleines Symbol, etwa ein Hilfe-Symbol, dessen Mittelpunkt weniger als 24 CSS-Pixel entfernt liegt (bei zwei 18er-Symbolen: weniger als 6 CSS-Pixel Lücke), wäre das Kriterium nicht erfüllt. Eine größere Schaltfläche bleibt in jedem Fall eine Empfehlung.

Hinweis zur Übungsseite: Geöffnet liegen beide Dialoge über dem ganzen Fenster, auch über der Navigation der Übungsseite – in Fassung B mit Absicht, denn nur so lässt sich prüfen, was dahinter erreichbar bleibt. Fassung A hält den Fokus zusätzlich per Skript im Dialog. Ohne dieses Skript ließe der Browser den Fokus nach der letzten Schaltfläche in die Browserleiste wandern und von dort zurück in den Dialog – auch das wäre in Ordnung, denn die Seite dahinter bleibt unerreichbar.

Karussell

Ein Karussell zeigt mehrere Inhalte nacheinander an derselben Stelle, oft mit automatischem Wechsel. Beide Fassungen zeigen dieselben vier Meldungen der Stadtbücherei.

Aufgabe: Lege eine Kreuzliste an: je Zeile ein Kriterium, je Fassung ein Urteil (erfüllt, nicht erfüllt, nicht anwendbar) und ein Satz Beleg. Nimm mindestens acht Kriterien auf – ein Karussell berührt mehr als das Grundgerüst (1.3.1, 1.4.11, 2.1.1, 2.4.3, 2.4.7, 2.5.8, 4.1.2). Notiere außerdem, wie sich ein Karussell mit der Tastatur bedienen lassen sollte und wann der automatische Wechsel anhalten muss.

So prüfst du: Starte den automatischen Wechsel über die Steuerung der Übungsseite und beobachte: Lässt er sich im Karussell selbst anhalten? Was passiert, wenn die Maus darüber steht oder der Tastaturfokus hineinwandert? Geh mit Tab durch das Karussell und zähle die Haltepunkte – stehst du immer auf etwas Sichtbarem? Am Mac vorher die Tastaturnavigation einschalten (Systemeinstellungen, Bereich „Tastatur“; in Safari zusätzlich in den Einstellungen unter „Erweitert“) – sonst überspringt Tab Links oder Schaltflächen. Wechsle die Folie mit Maus, Tastatur und durch Wischen (Finger oder gedrückte Maustaste). Miss die Punkte unter den Folien (Element untersuchen, Box-Modell: Breite, Höhe, Abstand der Mittelpunkte) und ihren Kontrast zum Hintergrund. Farbwerte liest du in den Entwicklerwerkzeugen ab (Element untersuchen, Bereich „Stile“) und gibst sie in einen Kontrastrechner ein – ohne Installation ein Rechner im Browser, sonst der Colour Contrast Analyser (Windows und Mac); der Prüfweg steht ausführlich bei 1.4.11. Sieh im Barrierefreiheitsbaum nach, wie Bilder, Punkte und Schaltflächen heißen. Mit Screenreader: Wird ein Folienwechsel angesagt?

Fassung A

Steuerung der Übungsseite – gehört nicht zum Beispiel. „Starten“ setzt den automatischen Folienwechsel in Gang, so wie er auf einer echten Seite beim Laden beginnen würde.

Neu in der Stadtbücherei
Lesesommer für Kinder

Wer in den Ferien drei Bücher liest, bekommt eine Urkunde und ein Eis.

Zum Lesesommer

Neue Hörbücher im Regal

120 Titel sind dazugekommen, von Krimi bis Sachbuch. Ausleihe wie gewohnt für vier Wochen.

Zu den Hörbüchern

Reparaturcafé am Samstag

Bring mit, was klemmt oder wackelt. Werkzeug, Hilfe und Kaffee gibt es von 10 bis 14 Uhr.

Zum Reparaturcafé

Länger geöffnet ab November

Dienstag bis Freitag ist die Bücherei künftig bis 19 Uhr für dich da.

Zu den Öffnungszeiten

Der Folienwechsel reagiert auch auf Wischen nach links oder rechts – mit dem Finger oder mit gedrückter Maustaste.

Fassung B

Steuerung der Übungsseite – gehört nicht zum Beispiel. „Starten“ setzt den automatischen Folienwechsel in Gang, so wie er auf einer echten Seite beim Laden beginnen würde.

Neu in der Stadtbücherei
Lesesommer für Kinder

Wer in den Ferien drei Bücher liest, bekommt eine Urkunde und ein Eis.

Zum Lesesommer

Neue Hörbücher im Regal

120 Titel sind dazugekommen, von Krimi bis Sachbuch. Ausleihe wie gewohnt für vier Wochen.

Zu den Hörbüchern

Reparaturcafé am Samstag

Bring mit, was klemmt oder wackelt. Werkzeug, Hilfe und Kaffee gibt es von 10 bis 14 Uhr.

Zum Reparaturcafé

Länger geöffnet ab November

Dienstag bis Freitag ist die Bücherei künftig bis 19 Uhr für dich da.

Zu den Öffnungszeiten

Der Folienwechsel reagiert auch auf Wischen nach links oder rechts – mit dem Finger oder mit gedrückter Maustaste.

Auflösung zum Karussell
  • Fassung A – erfüllt. Der automatische Wechsel hat eine Schaltfläche „Wechsel anhalten“ gleich am Anfang des Karussells, pausiert, solange die Maus darüber steht, und hält an, sobald der Tastaturfokus hineinkommt. (Startest du den Wechsel mit einem Mausklick im Karussell selbst, läuft er, bis die Maus das Karussell einmal verlassen hat; danach gilt die Pause wieder.) Zurück, Weiter und die Punkte sind echte Schaltflächen mit Namen; der aktuelle Punkt trägt aria-current="true". Unsichtbare Folien sind mit visibility: hidden auch für Tastatur und Screenreader weg. Ein Wechsel von Hand wird angesagt (aria-live="polite"); solange der Wechsel automatisch läuft, steht die Live-Region auf off, damit der Screenreader nicht alle vier Sekunden unterbrochen wird.
  • Fassung B – nicht erfüllt (acht Kriterien). Der Wechsel läuft alle vier Sekunden und lässt sich im Beispiel nicht anhalten – wer langsamer liest, kommt nicht zum Ende der Folie. Mit der Tastatur lässt sich die Folie gar nicht wechseln: Die Punkte sind span-Elemente mit Klick-Handler, ohne Rolle, Namen und Zustand, 10 × 10 CSS-Pixel groß und in hellem Grau kaum zu sehen. Tab läuft durch die Links aller vier Folien, auch der drei unsichtbaren (opacity: 0), und ein Fokusrahmen fehlt. Die Bilder haben kein alt-Attribut; Screenreader lesen stattdessen oft den Dateinamen vor.

Die Schaltflächen „Fassung … starten“ und „Fassung … stoppen“ darüber gehören zur Übungsseite, nicht zum Beispiel. Bewerte Fassung B so, als liefe der Wechsel von selbst ab dem Laden der Seite – eine Schaltfläche zum Stoppen gäbe es dann nicht.

Erwartetes Tastaturverhalten (Muster „Carousel“ im ARIA Authoring Practices Guide):

  • Die Schaltfläche zum Anhalten und Starten des Wechsels ist das erste Element des Karussells in der Tab-Reihenfolge.
  • Der automatische Wechsel hält an, sobald der Tastaturfokus ins Karussell gelangt, und pausiert, solange die Maus darüber steht. Er läuft erst wieder, wenn du ihn selbst startest.
  • Tab führt weiter zu „Vorherige Folie“, „Nächste Folie“, dem Link der sichtbaren Folie und den vier Punkten – und nie in eine unsichtbare Folie.
  • Enter oder Leertaste auf Zurück, Weiter oder einem Punkt wechselt die Folie; der Fokus bleibt auf der Schaltfläche. Nach der letzten Folie folgt wieder die erste.
  • Der Screenreader sagt beim Wechsel von Hand die neue Folie an, sinngemäß „Folie, 2 von 4, Neue Hörbücher im Regal …“. Der aktuelle Punkt wird als aktuell angesagt.
  • Wischen ist ein zusätzlicher Weg, nie der einzige.
  • Abweichung vom Muster: Für eine Reihe von Auswahl-Schaltflächen sieht das Muster am aktuellen Punkt aria-disabled="true" vor. Fassung A nutzt stattdessen aria-current="true". Das ist kein Verstoß – der Zustand ist im Code vorhanden und wird angesagt.

Kreuzliste:

Kreuzliste Karussell: Kriterien und Urteil je Fassung
KriteriumFassung AFassung B
1.1.1 Nicht-Text-Inhalterfüllt – die Illustrationen sind Schmuck neben dem Text und haben ein leeres alt; Pfeile mit aria-hidden, die Schaltflächen haben Namennicht erfüllt – img ohne alt-Attribut
1.3.1 Info und Beziehungenerfüllt – Bereich mit Namen, Folien als Gruppen „1 von 4“ bis „4 von 4“, Überschriften h5 und h6erfüllt – die Überschriften h5 und h6 sind dieselben; Gruppen und Namen für die Folien verlangt das Kriterium nicht. Dass die Punkte ihren Zustand nur optisch zeigen, gehört zu 4.1.2
1.4.3 Kontrast (Minimum)erfüllt – Text steht neben dem Bild, nicht darauf: 15,7:1erfüllt – wie A
1.4.11 Nicht-Text-Kontrasterfüllt – Punkte 4,8:1 und 15,7:1, Pfeile 15,7:1nicht erfüllt – die nicht gewählten Punkte haben 1,4:1 (#d5d9df auf Weiß)
2.1.1 Tastaturerfüllt – alle Schaltflächen per Tab und Enter oder Leertastenicht erfüllt – Folienwechsel nur mit Maus oder Finger
2.2.2 Pausieren, beenden, ausblendenerfüllt – „Wechsel anhalten“; Halt bei Tastaturfokus, Pause bei Mauszeigernicht erfüllt – der Wechsel beginnt von selbst, läuft länger als fünf Sekunden neben anderem Inhalt und lässt sich nicht anhalten
2.4.3 Fokus-Reihenfolgeerfüllt – unsichtbare Folien sind nicht fokussierbarnicht erfüllt – Tab hält an vier Links, von denen drei unsichtbar sind
2.4.7 Fokus sichtbarerfülltnicht erfüllt – outline: none an den Links, auch am sichtbaren
2.5.1 Zeigergestenerfüllt – Wischen ist möglich, Zurück und Weiter tun dasselbe mit einem Klickerfüllt, aber nur über die Punkte – Vor und Zurück gibt es allein als Wischgeste; ein Klick auf einen Punkt erreicht jede Folie ohne Geste. Wären die Punkte bloße Anzeige, wäre das Kriterium nicht erfüllt
2.5.8 Zielgröße (Minimum)erfüllt – Punkte 24 × 24, Pfeile 44 × 44 CSS-Pixelnicht erfüllt – Punkte 10 × 10 CSS-Pixel, Mittelpunkte 20 CSS-Pixel auseinander: Die 24er-Kreise der Abstandsregel überschneiden sich, und ein gleichwertiges größeres Bedienelement gibt es nicht
4.1.2 Name, Rolle, Werterfüllt – Schaltflächen mit Namen, aktueller Punkt mit aria-current; die Beschriftung der Schaltfläche wechselt zwischen „Wechsel anhalten“ und „Wechsel starten“nicht erfüllt – Punkte ohne Rolle, Namen und Zustand

Automatisch erkennbar? Kaum. axe meldet in Fassung B vier Stellen, alle zur selben Regel: die Bilder ohne alt (image-alt). Bewegung ohne Pause, fehlende Tastaturbedienung, die Punkte ohne Rolle, ihre Größe und ihr Kontrast bleiben unentdeckt. In Fassung A meldet axe nichts, weder im Ruhezustand noch bei laufendem Wechsel.

Streitfall Punkte (Tag 7): Hätte Fassung B neben den winzigen Punkten Pfeile mit 44 × 44 CSS-Pixel, die jede Folie erreichen, wäre 2.5.8 über die Ausnahme „gleichwertiges Bedienelement“ vertretbar erfüllt. Wer „direkt zu Folie 4 springen“ als eigene Funktion wertet, kommt begründet zum Gegenteil. Die Abstandsregel hilft in keinem Fall: Sie griffe erst ab 24 CSS-Pixel Mittelpunktabstand.

Grenzfall Pause am Ende: 2.2.2 verlangt einen Mechanismus, keine bestimmte Position. Stünde „Wechsel anhalten“ hinter allen Folien, wäre das trotzdem erfüllt, solange der Wechsel beim Tastaturfokus ohnehin anhält – die Schaltfläche an den Anfang zu setzen, ist dann eine Empfehlung.

Verwandte Kriterien: Wischen ist hier eine pfadbasierte Geste: Sie wird nur erkannt, wenn der Zeiger in annähernd gerader Linie nach links oder rechts geführt wird; weicht er deutlich nach oben oder unten ab oder kehrt er um, verfällt sie. Deshalb 2.5.1 und nicht 2.5.7 (Ziehen, bei dem nur Start- und Endpunkt zählen). Ein Karussell, das sich beliebig hin- und herziehen lässt, wäre dagegen ein Fall für 2.5.7 – das Urteil in der Kreuzliste hängt davon nicht ab, weil die Punkte in beiden Lesarten den Weg ohne Geste bieten. Dass Screenreader in Fassung B alle vier Folien hintereinander vorlesen, ist für sich kein Verstoß; zum Befund wird es über 2.4.3. Text auf einem Foto wäre ein Fall für 1.4.3, ein Pfeil auf einem Foto für 1.4.11 – beides kommt hier nicht vor.

Navigation mit Aufklappmenü

Die Hauptnavigation einer Website: einige Punkte führen direkt zu einer Seite, andere klappen ein Untermenü auf. Beide Fassungen zeigen denselben Seitenkopf der Stadtbücherei; geöffnet ist die Seite „Kontakt“.

Aufgabe: Lege eine Kreuzliste an: je Zeile ein Kriterium, je Fassung ein Urteil (erfüllt, nicht erfüllt, nicht anwendbar) und ein Satz Beleg. Nimm mindestens acht Kriterien auf, darunter zwei, die nicht zum Grundgerüst gehören (1.3.1, 1.4.11, 2.1.1, 2.4.3, 2.4.7, 2.5.8, 4.1.2). Notiere außerdem, wie sich eine Aufklappnavigation mit der Tastatur bedienen lassen sollte – und halte beide Fassungen dagegen.

So prüfst du: Öffne die Untermenüs „Ausleihe“ und „Veranstaltungen“ mit der Maus, dann nur mit der Tastatur (Tab, Enter, Leertaste, Esc). Am Mac vorher die Tastaturnavigation einschalten (Systemeinstellungen, Bereich „Tastatur“; in Safari zusätzlich in den Einstellungen unter „Erweitert“) – sonst überspringt Tab Links oder Schaltflächen. Erreichst du jeden Unterpunkt? Lässt sich ein geöffnetes Untermenü wieder schließen, ohne die Maus oder den Fokus wegzubewegen? Woran erkennst du die aktuelle Seite – und woran erkennt sie jemand, der keine Farben unterscheidet oder einen Screenreader nutzt? Miss den Kontrast zwischen der Farbe des aktuellen Punkts und der Farbe der übrigen Punkte. Farbwerte liest du in den Entwicklerwerkzeugen ab (Element untersuchen, Bereich „Stile“) und gibst sie in einen Kontrastrechner ein – ohne Installation ein Rechner im Browser, sonst der Colour Contrast Analyser (Windows und Mac); der Prüfweg steht ausführlich bei 1.4.11. Sieh im Barrierefreiheitsbaum nach: Rolle und Zustand der Punkte mit Untermenü, Eigenschaften des Links „Kontakt“. Prüfe auch bei 320 CSS-Pixel Breite oder 400 % Zoom (Strg + +, am Mac Cmd + +; zurück mit Strg + 0 bzw. Cmd + 0).

Fassung A

Stadtbücherei Lindenau

Kontakt

Stadtbücherei Lindenau, Am Markt 3. Telefon 0000 123456, dienstags bis freitags von 10 bis 18 Uhr.

Für Fragen zum Ausweis hältst du am besten deine Ausweisnummer bereit. Wir antworten in der Regel innerhalb von zwei Werktagen.

Nachricht schreiben

Die Links in diesem Beispiel führen nirgendwohin; du bleibst auf der Übungsseite.

Fassung B

Stadtbücherei Lindenau

Kontakt

Stadtbücherei Lindenau, Am Markt 3. Telefon 0000 123456, dienstags bis freitags von 10 bis 18 Uhr.

Für Fragen zum Ausweis hältst du am besten deine Ausweisnummer bereit. Wir antworten in der Regel innerhalb von zwei Werktagen.

Nachricht schreiben

Die Links in diesem Beispiel führen nirgendwohin; du bleibst auf der Übungsseite.

Auflösung zur Navigation
  • Fassung A – nicht erfüllt (vier Kriterien, mit 1.3.1 je nach Lesart fünf). „Ausleihe“ und „Veranstaltungen“ sind span-Elemente; das Untermenü erscheint allein über :hover im CSS. Mit der Tastatur sind die beiden Punkte nicht erreichbar und die sechs Unterseiten damit auch nicht – Tab springt von „Start“ direkt zu „Kontakt“. Auf Touch-Geräten öffnet sich das Untermenü je nach Browser gar nicht oder nur zufällig. Rolle und Zustand fehlen, ein Screenreader erfährt nicht, dass hier etwas aufklappt. Das aufgeklappte Untermenü liegt über dem Seiteninhalt und lässt sich nur loswerden, indem man die Maus wegbewegt. Die aktuelle Seite „Kontakt“ ist nur an der Textfarbe zu erkennen.
  • Fassung B – erfüllt. Die Punkte mit Untermenü sind button-Elemente mit aria-expanded und aria-controls, die Unterpunkte gewöhnliche Links in einer Liste. Das Untermenü öffnet nur auf Aktivierung, nie bei Hover oder Fokus. Esc schließt es und setzt den Fokus auf seine Schaltfläche. Die aktuelle Seite trägt aria-current="page" und ist zusätzlich zur Farbe unterstrichen.

Erwartetes Tastaturverhalten (Beispiel „Disclosure Navigation Menu“ im ARIA Authoring Practices Guide):

  • Tab erreicht der Reihe nach „Start“, „Ausleihe“, „Veranstaltungen“, „Kontakt“.
  • Enter oder Leertaste auf einer Schaltfläche klappt das Untermenü auf oder zu. Der Fokus bleibt auf der Schaltfläche; ein anderes offenes Untermenü schließt sich.
  • Ist ein Untermenü offen, führt der nächste Tab zu seinem ersten Link – es folgt in der Reihenfolge direkt auf seine Schaltfläche.
  • Esc schließt das offene Untermenü und setzt den Fokus zurück auf seine Schaltfläche.
  • Verlässt der Fokus die Navigation, schließt sich das Untermenü.
  • Der Fokus allein öffnet nichts und lädt nichts.
  • Der Screenreader sagt sinngemäß „Ausleihe, Schaltfläche, reduziert“ und „Kontakt, Link, aktuelle Seite“.
  • Optional laut Beispiel: Pfeiltasten, Pos1 und Ende zwischen den Punkten. Fassung B hat sie nicht – eine Abweichung vom Muster, kein Verstoß.

Kreuzliste:

Kreuzliste Navigation: Kriterien und Urteil je Fassung
KriteriumFassung AFassung B
1.3.1 Info und Beziehungennicht erfüllt (strittig) – dass „Kontakt“ in der Navigation der aktuelle Punkt ist, zeigt nur die Darstellung; im Code steht dazu nichts. Gegenargument: Die Überschrift „Kontakt“ nennt die Seite im Text; viele werten das fehlende aria-current deshalb als Empfehlung und den Befund allein bei 1.4.1erfüllt – aria-current="page"; Navigation als nav mit Listen
1.4.1 Benutzung von Farbenicht erfüllt – aktuelle Seite nur durch die Textfarbe markiert; die beiden Farben haben zueinander 2,0:1erfüllt – Farbe und Unterstreichung
1.4.10 Umfluss (Reflow)erfüllt – bei 320 CSS-Pixel stehen die Punkte untereinander, nichts scrollt quererfüllt – wie A; das Untermenü schiebt den Inhalt nach unten
1.4.11 Nicht-Text-Kontrasterfüllt – Pfeil am Menüpunkt 14,3:1erfüllt – wie A, dazu der Fokusrahmen
1.4.13 Inhalt bei Hover oder Fokusnicht erfüllt – in der breiten Ansicht erscheint das Untermenü bei Hover, verdeckt den Inhalt darunter und lässt sich nicht mit Esc schließen. In der schmalen Ansicht (Fenster bis 40rem breit, bei üblicher Schriftgröße 640 CSS-Pixel) schiebt es den Inhalt nach unten und verdeckt nichts; dort greift die Bedingung nichtnicht anwendbar – nichts erscheint bei Hover oder Fokus
2.1.1 Tastaturnicht erfüllt – Untermenüs und ihre sechs Links per Tastatur nicht erreichbarerfüllt
2.4.3 Fokus-Reihenfolgeerfüllt – die zwei fokussierbaren Links kommen in sinnvoller Reihenfolgeerfüllt – das Untermenü folgt direkt auf seine Schaltfläche
2.4.7 Fokus sichtbarerfüllt – an „Start“ und „Kontakt“erfüllt – an allen Punkten und Unterpunkten
2.5.8 Zielgröße (Minimum)erfüllt – alle Punkte mindestens 44 CSS-Pixel hocherfüllt – wie A
3.2.1 Bei Fokuserfüllt – der Fokus löst nichts auserfüllt – der Fokus öffnet kein Untermenü und lädt keine Seite
4.1.2 Name, Rolle, Wertnicht erfüllt – die aufklappenden Punkte haben weder Rolle noch Zustanderfüllt – Rolle Schaltfläche, aria-expanded wechselt

Automatisch erkennbar? Nein. axe meldet in Fassung A nichts: Ein Untermenü, das nur bei Hover erscheint, sieht für das Werkzeug aus wie ausgeblendeter Inhalt, und dass eine andere Textfarbe „aktuelle Seite“ bedeutet, kann es nicht wissen. In Fassung B meldet axe ebenfalls nichts, auch nicht bei geöffnetem Untermenü.

Grenzfall: Wäre „Ausleihe“ in Fassung A ein Link auf eine Übersichtsseite, auf der wirklich alle Unterseiten verlinkt sind, wäre 2.1.1 vertretbar erfüllt – die Unterseiten sind dann per Tastatur erreichbar, nur auf einem längeren Weg. Fehlt dort auch nur eine, ist es nicht erfüllt. Als Empfehlung gehört es in jedem Fall in den Bericht.

Stolperstelle: Die Rollen menu und menubar sind für Anwendungsmenüs gedacht. Wer sie für eine Website-Navigation verwendet, verspricht Pfeiltastenbedienung und muss sie liefern. Fassung B kommt bewusst ohne sie aus.

Verwandte Kriterien: Auf einer echten Website kämen 3.2.3 (gleiche Reihenfolge auf allen Seiten) und, bei fester Kopfzeile, 2.4.11 dazu. Beides lässt sich an einer einzelnen Komponente nicht prüfen.

Formular: Fehlerparcours

Dasselbe Antragsformular in zwei Fassungen. An einem Formular hängen viele Kriterien zugleich: Beschriftung und Struktur, Eingabezweck, Fehlermeldungen, Statusmeldungen und die Absicherung folgenreicher Eingaben.

So prüfst du: Fülle jede Fassung absichtlich fehlerhaft aus: Lass ein Pflichtfeld leer, gib eine E-Mail-Adresse ohne @ ein und trage das Datum in einem ungewöhnlichen Format ein, zum Beispiel 2026/10/05. Schicke ab und lass den Zustand stehen. Geh dann vier Runden: 3.3.1, 3.3.2, 3.3.3, 3.3.4. Mit Screenreader (NVDA mit Firefox oder Chrome, Windows-Sprachausgabe mit Edge, VoiceOver mit Safari): Wird die Meldung angesagt? Wohin springt der Fokus nach dem Abschicken? Ohne Screenreader: Beobachte den Fokus und suche die Meldung im Barrierefreiheitsbaum der Entwicklerwerkzeuge. Korrigiere danach alles und schicke noch einmal ab.

Fassung A

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Büchereiausweis beantragen

Pflichtfelder sind mit einem Stern (*) gekennzeichnet.

Ausweisart

Jahresgebühr: wird nach der Auswahl angezeigt

Format TT.MM.JJJJ, zum Beispiel 05.10.2026

Persönliche Angaben
Kontakt

Ziffern, Leerzeichen, + oder /, zum Beispiel 0000 123456

Anschrift

5 Ziffern

Fassung B

Steuerung der Übungsseite – gehört nicht zum Beispiel.

Büchereiausweis beantragen

Rot beschriftete Felder sind Pflichtfelder.

Ausweisart

Jahresgebühr: wird nach der Auswahl angezeigt

Datum
Persönliche Angaben
Kontakt
E-Mail
Anschrift
PLZ / Ort
Ich erkenne die Benutzungsordnung an.

Auflösung zum Formular
  • Fassung A – alle Kriterien der Kreuzliste erfüllt. Nach dem fehlerhaften Abschicken erscheint über den Feldern eine Zusammenfassung („Bitte korrigiere 3 Angaben“), der Fokus steht auf ihrer Überschrift, jeder Eintrag springt ins betroffene Feld. An jedem Feld steht dieselbe Meldung noch einmal, verbunden über aria-describedby, und sie sagt, wie es richtig geht. Sind alle Angaben in Ordnung, kommt zuerst der Prüfschritt; erst dort wird kostenpflichtig beantragt.
  • Fassung B – viele Kriterien nicht erfüllt. Nach dem Abschicken erscheint über der Schaltfläche „Es sind Fehler aufgetreten“, einige Felder bekommen einen roten Rahmen – mehr nicht. Ein Screenreader bleibt stumm, der Fokus bleibt auf der Schaltfläche. Wer alles korrigiert, hat mit dem nächsten Klick sofort kostenpflichtig beantragt – ohne Übersicht; für 3.3.4 reicht das nach der Kursposition gerade noch, weil die Angaben geprüft werden und sich korrigieren lassen. Dazu kommen die Mängel, die schon vor dem Abschicken da sind: Platzhalter statt Beschriftungen, nicht verknüpfte Beschriftungen, Pflichtfelder nur über Farbe.
Kreuzliste: Formular, Fassung A und B
Kriterium Fassung A Fassung B
1.3.1 Info und Beziehungen erfüllt – jede Beschriftung per label for verknüpft, Gruppen als fieldset mit legend, Überschriften als Überschriften, Pflicht als required nicht erfüllt – „Datum“, „E-Mail“, „PLZ / Ort“ und der Text am Kontrollkästchen sind nicht verknüpft; Titel und Gruppen sind nur fett gesetzte div; Pflicht steht nicht im Code
1.3.5 Eingabezweck bestimmen erfüllt – autocomplete an Vorname, Nachname, E-Mail, Telefon, Straße, Postleitzahl, Ort nicht erfüllt – kein einziges autocomplete
1.4.1 Benutzung von Farbe erfüllt – Pflicht über Stern und Erklärung, Fehler über Text nicht erfüllt – Pflichtfelder nur an der roten Schrift erkennbar; Fehler an Textfeldern nur am Farbwechsel des Rahmens (Auswahlfelder werden gar nicht markiert)
1.4.3 Kontrast (Minimum) erfüllt – auch Hinweise und Meldungen über 4,5:1 nicht erfüllt – Platzhalter „Vorname“ und „Nachname“ mit 2,6:1
2.1.1 Tastatur erfüllt – native Felder und Schaltflächen; auch die Sprunglinks der Zusammenfassung sind per Tastatur erreichbar erfüllt – alles sind native Bedienelemente
2.4.3 Fokus-Reihenfolge erfüllt – nach dem Abschicken steht der Fokus auf der Zusammenfassung, beim Wechsel auf der Überschrift der neuen Ansicht erfüllt – die Reihenfolge stimmt; dass der Fokus auf der Schaltfläche bleibt, wird erst mit 4.1.3 zum Problem
2.4.6 Überschriften und Beschriftungen (Labels) erfüllt – „Ausweis gültig ab“, „Telefon (freiwillig)“ nicht erfüllt – „Datum“ (welches?) und „Nummer“ (welche?) beschreiben den Zweck nicht
2.5.3 Beschriftung (Label) im Namen erfüllt – sichtbarer Text und Name stimmen überein, etwa „Weiter: Angaben prüfen“ nicht erfüllt – sichtbar steht „Antrag abschicken“, der Name lautet „Senden“ (aria-label)
3.3.1 Fehleridentifizierung erfüllt – Zusammenfassung mit Sprunglinks, dazu Text an jedem Feld, aria-invalid nicht erfüllt – „Es sind Fehler aufgetreten“ nennt kein Feld; am Feld nur ein roter Rahmen
3.3.2 Beschriftungen (Labels) oder Anweisungen erfüllt – sichtbare Beschriftungen, Stern erklärt, Formate vor der Eingabe nicht erfüllt – Vorname und Nachname nur als Platzhalter (und ohne Pflicht-Kennzeichen), kein Format für Datum, PLZ und Nummer
3.3.3 Fehlerempfehlung erfüllt – jede Meldung sagt, wie es richtig geht nicht erfüllt – kein Vorschlag, obwohl die Seite Format und Regeln kennt
3.3.4 Fehlervermeidung (rechtliche, finanzielle, Daten) erfüllt – Eingaben werden geprüft, dazu Prüfschritt mit „Angaben ändern“ vor dem kostenpflichtigen Antrag (geprüft und bestätigt) erfüllt, aber knapp (Kursposition) – die Angaben werden geprüft, bleiben stehen und lassen sich korrigieren: der Weg „geprüft“. Danach wird ohne Übersicht, Rückfrage oder Rücknahme beantragt; eine verrutschte Ausweisart fängt niemand ab
3.3.7 Redundante Eingabe erfüllt – Eingaben bleiben nach Meldungen und nach „Angaben ändern“ stehen erfüllt – nach einer Meldung bleiben die Eingaben stehen
4.1.2 Name, Rolle, Wert erfüllt – jedes Feld hat Namen und Rolle; Pflicht und „ungültig“ stehen als Zustand im Code (required, aria-invalid) nicht erfüllt – Datum, E-Mail, PLZ, Ort und das Kontrollkästchen haben keinen Namen; Vorname und Nachname nur den Platzhalter
4.1.3 Statusmeldungen erfüllt – die Jahresgebühr ist eine Statusmeldung (role="status"); Fehler und Abschluss erhalten den Fokus und brauchen deshalb keine nicht erfüllt – Jahresgebühr, Fehlermeldung und Erfolgsmeldung erscheinen, ohne angesagt zu werden

Nicht anwendbar in beiden Fassungen: 3.3.8 – hier meldet sich niemand an. Die Schaltflächen „zurücksetzen“ gehören zur Übungsseite, nicht zum Formular.

Automatisch erkennbar? Nur ein kleiner Teil. axe meldet in Fassung B fünf Felder ohne Beschriftung (Regel label: Datum, E-Mail, PLZ, Ort, Kontrollkästchen) – in Fassung A nichts. Vorname und Nachname rutschen durch, weil der Platzhalter als Name zählt. Was erst nach dem Abschicken sichtbar wird (3.3.1, 3.3.3, 4.1.3), beurteilt kein Werkzeug – auch im von Hand erzeugten Fehlerzustand meldet axe nichts Neues; den Platzhalterkontrast, fehlendes autocomplete und die Farbe als einziges Pflicht-Kennzeichen ebenfalls nicht.

Ein Fehler, mehrere Kriterien: Die nicht verknüpfte Beschriftung von „E-Mail“ taucht bei 1.3.1 und 4.1.2 auf, die Platzhalter bei 3.3.2, 1.4.3 und 4.1.2, die stumme Fehlermeldung bei 3.3.1, 3.3.3 und 4.1.3. Im Bericht wird daraus je eine Ursache mit mehreren betroffenen Kriterien, nicht drei getrennte Befunde.

Grenzfall 3.3.4: Fassung B macht bei den Meldungen fast alles falsch – das zählt bei 3.3.1 und 3.3.3, nicht hier. Für 3.3.4 genügt einer von drei Wegen, und „geprüft“ ist einer davon: B prüft neun Angaben, lässt alles stehen und erlaubt die Korrektur. Kursposition deshalb: erfüllt. Die Prüfung fängt aber nur Formfehler; gute Praxis ist der Prüfschritt aus Fassung A. Der BIK BITV-Test (Prüfschritt 9.3.3.4) verlangt eine Anzeige der Daten mit Korrektur, eine Bestätigung oder eine Rückabwicklung und käme für B zu „nicht erfüllt“ – im Bericht also das Verfahren nennen.

Grenzfall 4.1.3: Die Zusammenfassung in Fassung A erhält den Fokus und ist deshalb keine Statusmeldung im Sinn von 4.1.3. Wer 4.1.3 hier als „nicht erfüllt“ wertet, weil kein role="alert" gesetzt ist, liegt daneben – der Fokuswechsel ist der andere zulässige Weg.

Zwei Beispielsites: Kriterien für ganze Seiten und für mehrere Seiten

Manche Kriterien lassen sich nicht an einem einzelnen Beispiel prüfen, sondern nur an einer ganzen Seite oder an mehreren Seiten zusammen: Sprache der Seite, Seitentitel, Sprunglink, Wege zu den Seiten, Navigation, Benennungen, Hilfe – und alles, was einen Ablauf über mehrere Schritte betrifft. Dafür gibt es zweimal dieselbe kleine Website der erfundenen Stadtbücherei Lindenau: gleicher Inhalt, fast gleiches Aussehen, verschiedener Code. Wie die beiden abschneiden, findest du selbst heraus.

Beide Sites haben die Seiten Start, Ausleihe, Veranstaltungen und Kontakt sowie den Ablauf „Zur Veranstaltung anmelden“. Auf die Sites verweisen die Abschnitte 2.4.1, 2.4.2, 2.4.5, 3.1.1, 3.2.3, 3.2.4 und 3.2.6. Für einen Seitenvergleich öffnest du drei Seiten derselben Site in drei Tabs.

Der Ablauf „Zur Veranstaltung anmelden“

Diesen Ablauf nimmst du für den Tastatur-Durchgang und für alles, was Formulare und Prozesse betrifft. Er ist in beiden Sites derselbe:

  1. Start ist die Seite „Veranstaltungen“: Veranstaltungen in Eins öffnen (neuer Tab) oder Veranstaltungen in Zwei öffnen (neuer Tab).
  2. Wähle bei einer Veranstaltung mit freien Plätzen „Anmelden“.
  3. Schritt 1: Veranstaltung und Zahl der Plätze wählen.
  4. Schritt 2: Angaben zur Person eintragen.
  5. Schritt 3: die Anmeldung verbindlich abschließen.
  6. Ziel ist die Seite „Bestätigung der Anmeldung“ mit einer Anmeldenummer.

Keine echten Daten. Die Formulare senden nichts ab. Deine Eingaben bleiben im Browser-Tab der Beispielsite und verschwinden, wenn du ihn schließt. Trag trotzdem nur erfundene Angaben ein, zum Beispiel: Kim Beispiel, kim@beispiel.example, Telefon 0000 123456, Ausweisnummer L123456.

Bewegung. Auf der Startseite einer der beiden Sites läuft Text von selbst durch. Ist auf deinem Gerät „Bewegung reduzieren“ eingeschaltet, bleibt er stehen.

Auflösung: Welche Site ist welche?
  • Eins – erfüllt. Eins erfüllt die Kriterien der Stufen A und AA. Jede Seite hat lang="de", einen eindeutigen Titel, einen Sprunglink, Landmarks und echte Überschriften. Zu den Seiten führen Navigation, Suche und Inhaltsübersicht. Navigation, Benennungen und Hilfe sind auf allen Seiten gleich. Der Ablauf lässt sich vollständig mit der Tastatur bedienen; Fehlermeldungen nennen das Feld und machen einen Vorschlag; vor der verbindlichen Anmeldung prüfst und änderst du deine Angaben; nichts musst du zweimal eingeben.
  • Zwei – nicht erfüllt. Zwei enthält die Barrieren: fehlende oder unpassende Sprachangabe, nichtssagende Titel, kein Sprunglink, keine Landmarks und keine Überschriften-Elemente, nur ein Weg zu den Seiten, wechselnde Reihenfolge der Navigation, wechselnde Namen für dieselbe Funktion, Hilfe an wechselnden Stellen. Dazu kommen viele weitere Barrieren in Inhalt, Bedienung und Formularen, die du in den Übungen selbst findest. Den Fehlerkatalog hat die Kursleitung.

Automatisch erkennbar? Teilweise. axe meldet auf den Seiten von Eins nichts, auf den Seiten von Zwei je nach Seite 6 bis 18 Stellen (ohne „Best Practices“; mit ihnen 15 bis 42): fehlende Sprachangabe, Bilder ohne Alternativtext, Felder und Auswahllisten ohne Beschriftung, Schaltflächen ohne Namen, zu geringer Kontrast, ein fehlender Seitentitel. Den größeren Teil der Barrieren von Zwei meldet kein Werkzeug.