Beispiel: A und B
Nach jedem Auslösen steht rechts neben dem Element „Gebucht“, beim zweiten Mal „Gebucht (2-mal)“. Gebucht wird in dieser Übung nichts.
Übungsseite Accessibility Testing
WCAG 2.2, Stufe A und AA – 55 Kriterien zum Selbstprüfen
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.
Zum Einstieg in DOM, Barrierefreiheitsbaum und automatische Prüfwerkzeuge – bevor es an die einzelnen Kriterien geht.
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.
Nach jedem Auslösen steht rechts neben dem Element „Gebucht“, beim zweiten Mal „Gebucht (2-mal)“. Gebucht wird in dieser Übung nichts.
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.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).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:
<button type="button" onclick="…">Termin buchen</button><div onclick="…">Termin buchen</div><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.
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.
Öffnungszeiten der Praxis: Montag bis Freitag, 8 bis 12 Uhr, Dienstag und Donnerstag zusätzlich 15 bis 18 Uhr.
| Nr. | Element | Rolle | Name | Zustand | Woher der Name kommt |
|---|---|---|---|---|---|
| 1 | Link | link | Öffnungszeiten | – | Inhalt |
| 2 | Lupen-Schaltfläche | button | Suche | – | aria-label |
| 3 | Bild | image (in manchen Werkzeugen img) | Das Praxisteam am Empfang | – | alt |
| 4 | Eingabefeld | textbox | Postleitzahl | erforderlich | label |
| 5 | Kontrollkästchen | checkbox | Newsletter | angehakt (Screenreader sagen „aktiviert“) | label |
| 6 | Schaltfläche „Mehr“ | button | Weitere Filter anzeigen | zugeklappt (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:
<a href="#…">Öffnungszeiten</a><button aria-label="Suche"><svg aria-hidden="true">…</svg></button><img src="…" alt="Das Praxisteam am Empfang"><label for="plz">Postleitzahl</label><input id="plz" required><input type="checkbox" id="nl" checked><label for="nl">Newsletter</label><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).
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.
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.
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):
| Nr. | Barriere | Kriterium | So merkst du es |
|---|---|---|---|
| 1 | Der Fokus ist nirgends sichtbar (outline: none für alle Elemente). | 2.4.7 | Tab drücken: Nichts zeigt, wo du bist. Bei Links verrät nur die Statuszeile des Browsers das Ziel. |
| 2 | Hauptmenü: 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.13 | Tab springt vom Signet direkt in den Inhalt. Im Baum stehen „Praxis“, „Leistungen“, „Service“ als Text; die acht Unterpunkte gibt es dort nicht. |
| 3 | Die 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.13 | Mit der Tastatur und mit dem Screenreader ist die Auskunft nicht zu bekommen. Mit der Maus: Esc drücken – die Blase bleibt. |
| 4 | Alle fünf Bilder haben den Alternativtext „Bild“: Signet, Sprechzeiten, Team, Zierlinie, Telefonhörer. | 1.1.1; bei Signet und Telefonhörer auch 2.4.4 | Screenreader: „Bild“ – fünfmal. Die Sprechzeiten fehlen damit ganz, die Zierlinie müsste alt="" haben, und zwei Links heißen „Bild“. |
| 5 | Die Sprechzeiten sind ein Bild eines Textes. | 1.4.5 | Der 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. |
| 6 | Zwischenü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. |
| 7 | Der Satz „Termine nur nach Vereinbarung …“ steht hellgrün auf einem hellen Farbverlauf, Kontrast etwa 1,5:1 bis 1,7:1. | 1.4.3 | Mit 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. |
| 8 | Der Link „mehr“ steht allein in einem eigenen Absatz. | 2.4.4 | Linkliste des Screenreaders: „mehr“. Im selben Absatz steht nichts, was das Ziel erklärt. |
| 9 | Die 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.2 | Tab 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. |
| 10 | Formular: 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.3 | Screenreader: „Feld 2, Eingabefeld“. Sprachsteuerung: „Klick Telefon“ findet nichts. Ein Name ist vorhanden – deshalb schweigen die Werkzeuge, und 4.1.2 ist formal erfüllt. |
| 11 | Fokusreihenfolge 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.3 | Etwas eintippen und Tab drücken: Die Schreibmarke springt von unten nach oben. |
| 12 | Pflichtfelder 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“. |
| 13 | Das 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.3 | Die 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.2 | Tab springt vom Feld „Name“ in den Seitenfuß. Ohne Maus lässt sich das Formular nicht absenden. |
| 15 | Fehler zeigt nur ein roter Rahmen um die leeren Pflichtfelder. Es gibt keinen Text und kein aria-invalid. | 1.4.1 (F81), 3.3.1 | Mit der Maus leer absenden. Das Rot und das Grau der Rahmen sind fast gleich hell – in Graustufen ist kein Unterschied zu sehen. |
| 16 | Die Bestätigung „Danke. Wir rufen dich … zurück.“ erscheint ohne Statusrolle. | 4.1.3 | Mit Screenreader und Maus absenden: Angesagt wird nichts. |
| 17 | Die Felder für Name und Telefon geben ihren Zweck nicht an (kein autocomplete). | 1.3.5 | Feld 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.
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.
Wir liefern Strom, Wärme und Wasser für die Haushalte in Beispielstadt.
Unser Kundenzentrum am Marktplatz ist montags bis freitags geöffnet.
So verteilt sich der Stromverbrauch eines Haushalts mit drei Personen über das Jahr. Je nach Jahreszeit schwankt er deutlich.
Anna Beispiel Kundenberatung Tarife Telefon 0000 555 012
Das Angebot gilt für alle, die bis zum 31. Dezember neu zu den Stadtwerken Beispielstadt kommen.
„Der Wechsel war in zehn Minuten erledigt, und die Abrechnung verstehe ich jetzt endlich.“
Kundin aus Beispielstadt
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.
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.
Lesesaal im 1. Obergeschoss
„Nebel über dem Kanal“ – so bewerten es unsere Lesenden:
Bild nicht lesbar? Die Zeichen zum Anhören:
So verteilt sich der Stromverbrauch eines Haushalts mit drei Personen über das Jahr. Je nach Jahreszeit schwankt er deutlich.
| Quartal | kWh |
|---|---|
| 1. Quartal | 1.150 |
| 2. Quartal | 780 |
| 3. Quartal | 640 |
| 4. Quartal | 1.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.
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.alt="Stadtwerke Beispielstadt – Startseite".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“).alt="" oder als CSS-Hintergrund.alt="" vertretbar – die Doppelansage ist ein Verbesserungshinweis, kein Verstoß.alt="" (Technik H2).alt="Sicherheitsabfrage: Zeichen aus dem Bild eingeben" und zusätzlich eine Hörfassung oder ein anderes Verfahren ohne Bild – siehe Beispiel F, Stelle 4.aria-label oder unsichtbarer Text mit dem Namen des Netzwerks, das SVG mit aria-hidden="true".role="img" mit aria-label (Technik ARIA24) – siehe Beispiel F, Stelle 3.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.alt-Attribut (F65) oder ein Dateiname (F30).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.aria-hidden="true" übergehen Hilfsmittel es. Der Link heißt „Veranstaltungskalender“.role="img" und aria-label="4 von 5 Sternen".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.
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?
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.
Jede Woche stellt das Team der Stadtbücherei Lindenau ein Hörbuch vor.
Audio, 31 Sekunden
[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]
Video ohne Ton, 26 Sekunden
Der Rückgabeautomat steht im Foyer. So gibst du ein Buch zurück:
Video ohne Ton, 26 Sekunden
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):
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.
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.
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.
Video mit Ton, 37 Sekunden. Dieses Video mit Audiodeskription ansehen
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.
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.
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.
Video mit Ton, 37 Sekunden, mit Untertiteln
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.
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.
Live Die Übertragung läuft.
Live Die Übertragung läuft.
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.
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?
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.
Video mit Ton, 62 Sekunden, mit Untertiteln
Video mit Ton, 18 Sekunden, mit Untertiteln
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.
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“.
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.
Dein Leseausweis gilt zwölf Monate. Verlängern kannst du ihn ab vier Wochen vor dem Ablauf.
Melde dich in deinem Konto an und wähle „Ausweis verlängern“. Die neue Laufzeit gilt sofort.
Komm mit deinem Ausweis an die Theke im Erdgeschoss. Das dauert etwa fünf Minuten.
Jeden Dienstag lesen Ehrenamtliche in der Kinderbücherei vor – für Kinder von vier bis acht Jahren.
Dienstags um 16 Uhr, außer in den Schulferien.
Nicht nötig. Kommt einfach vorbei.
Für die Anmeldung brauchst du:
So läuft die Anmeldung ab:
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
Dreimal dieselbe Startseite, jeweils als eigenes Dokument. Sind Kopfbereich, Navigation, Hauptinhalt, Randspalte und Fußbereich erkennbar, ohne hinzusehen?
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.
Fett gedruckte Termine sind ausgebucht.
Fett gedruckte Termine sind ausgebucht.
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.h5 und h6. Die Ebenen bilden ab, was man sieht: „Online“ und „Vor Ort“ sind Unterabschnitte von „Ausweis verlängern“.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.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.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.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.header, nav mit Namen, main, aside mit Namen, footer, dazu h1 und h2. Jeder sichtbare Bereich ist als Landmark ansteuerbar.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.p-Elemente.strong hervorgehoben. Wer die Schrift nicht sieht, erfährt dasselbe.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?
| Linie | Richtung | Abfahrt |
| 12 | Hauptbahnhof | 14:05 Uhr |
| 12 | Westpark | 14:11 Uhr |
| 34 | Klinikum | 14:16 Uhr |
| 7 | Hafen | 14:22 Uhr |
| 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 |
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".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.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.fieldset und legend wie in Beispiel O.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.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).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.::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.
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.
Melde dich mit Ausweisnummer und Passwort in deinem Konto an.
Wähle dort den Punkt „Ausweis verlängern“ und prüfe deine Anschrift.
Bestätige danach die Verlängerung. Die neue Laufzeit gilt sofort.
Wähle dort den Punkt „Ausweis verlängern“ und prüfe deine Anschrift.
Bestätige danach die Verlängerung. Die neue Laufzeit gilt sofort.
Melde dich mit Ausweisnummer und Passwort in deinem Konto an.
4,00 €
Aus Baumwolle, mit langen Henkeln.
18,00 €
Für Erwachsene, gilt zwölf Monate.
10,00 €
Einlösbar für Ausweis und Laden.
Theke im Erdgeschoss
Telefon 0000 123456
Dienstag bis Freitag, 10 bis 18 Uhr
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.
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.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.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.
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.
Wenn alle Angaben stimmen, wähle „Reservierung abschicken“ (grüner Knopf rechts). Zum Ändern wähle „Zurück“ (grauer Knopf links).
Wenn alle Angaben stimmen, drücke den grünen Knopf rechts. Zum Ändern nimm den grauen Knopf links.
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.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Solange der Ton aus ist, bleibt Beispiel D stumm.
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.
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.
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.
Digitaler Leseausweis der Stadtbücherei Lindenau.
Digitaler Leseausweis der Stadtbücherei Lindenau.
Klaviatur aus der Musikecke der Kinderbücherei. Die Tasten geben Töne aus, sobald du sie drückst.
@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.(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.
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.
| 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.
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.
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.
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.
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.
#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.#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.#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.#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.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.#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).
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.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Beispiel A ist nicht geladen.
Hier erscheint die Beispielseite, sobald du sie lädst.
Stadtbücherei Lindenau
Am 14. November bleibt die Bücherei bis Mitternacht geöffnet: Lesungen im Lesesaal, Bilderbuchkino für Kinder und Musik im Foyer.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Beispiel B ist nicht geladen.
Hier erscheint die Beispielseite, sobald du sie lädst.
Stadtbücherei Lindenau
Am 14. November bleibt die Bücherei bis Mitternacht geöffnet: Lesungen im Lesesaal, Bilderbuchkino für Kinder und Musik im Foyer.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Beispiel C ist nicht geladen.
Hier erscheint die Beispielseite, sobald du sie lädst.
Stadtbücherei Lindenau
Am 14. November bleibt die Bücherei bis Mitternacht geöffnet: Lesungen im Lesesaal, Bilderbuchkino für Kinder und Musik im Foyer.
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).
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.
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
Dienstag bis Samstag, 10 bis 18 Uhr
Die Rückgabebox am Haupteingang ist rund um die Uhr geöffnet. Bitte wirf keine Spiele und keine Hörfiguren ein.
Die Rückgabebox am Haupteingang ist rund um die Uhr geöffnet. Bitte wirf keine Spiele und keine Hörfiguren ein.
Neu: Spiele ausleihen
Neu: Spiele ausleihen
Neu: Spiele ausleihen
„Die Stadt der Leserinnen“ ist zurzeit ausgeliehen und schon dreimal vorgemerkt.
Aus dem Nachlass einer Lindenauer Buchhandlung: acht Bände für das Lesecafé.
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.
| Stelle | Vordergrund | Hintergrund | Verhältnis | Schwelle | Urteil zu 1.4.3 |
|---|---|---|---|---|---|
| 1 – Fließtext auf Farbfläche | #FFFFFF | #1F7A5C | 5,25:1 | 4,5:1 | erfüllt |
| 1, Zusatzstufe – Link bei Hover oder Fokus | #FFFFFF | #A8D5BA | 1,63:1 | 4,5:1 | nicht erfüllt |
| 2 – Platzhalter im Eingabefeld | #A3A3A3 | #FFFFFF | 2,52:1 | 4,5:1 | nicht erfüllt |
| 3 – Text auf dem Foto, über dem Fenster | #FFFFFF | #C9E3F3 | 1,33:1 | 3: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 heller | 13,71:1, auf den Buchrücken mindestens 8,89:1 | wie oben | für sich genommen ausreichend |
::placeholder).#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.#4A5361 auf #FFFFFF: 7,77:1.#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.#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.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.#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.#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).
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.
Stadtbücherei Lindenau
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
Stadtbücherei Lindenau
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
Bitte gib alle Medien bis zum Ende der Leihfrist zurück.
Lesesommer 2026: Für jedes gelesene Buch gibt es einen Stempel im Lesepass.
Eine eigene kleine Seite. Öffne sie auch auf einem Smartphone oder Tablet und vergrößere dort mit zwei Fingern.
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.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.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.<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).
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?
| Montag | geschlossen |
|---|---|
| Dienstag bis Freitag | 10 bis 18 Uhr |
| Samstag | 10 bis 14 Uhr |
| Sonntag | geschlossen |
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.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).
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).
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.
Seite „Leseausweis verlängern“ der Stadtbücherei Lindenau mit Kopfzeile und Navigation, Cookie-Hinweis, Anleitung, Formular, zwei kleinen Tabellen und Kontaktangaben.
Dieselbe Seite „Leseausweis verlängern“ mit denselben Inhalten in einer zweiten Fassung.
Seite „Veranstaltungen, Zahlen und Anfahrt“ in fünf Teilen: Veranstaltungstabelle, Säulendiagramm, Stadtplan in zwei Fassungen, Textfeld mit Werkzeugleiste. Beurteile jeden Teil einzeln.
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.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.
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.
Stelle 4: Gehe mit der Tabulatortaste in das Eingabefeld und auf den Link darunter.
Sieh dir auch den Fokusrahmen der Kästchen an.
Vormerken kannst du erst, wenn du angemeldet bist.
Alle Verhältnisse sind aus den Farbwerten im CSS nach der Formel der WCAG gerechnet.
| Stelle | Gemessen | Farben | Verhältnis | Schwelle | Urteil |
|---|---|---|---|---|---|
| 4 – Fokusrahmen | Rahmen gegen die angrenzende Fläche innen und außen | #8FC3F5 auf #FFFFFF | 1,86:1 | 3:1 | 1.4.11 nicht erfüllt |
| 5 – Symbol-Schaltfläche | Lupe gegen Hintergrund | #6B6B6B auf #FFFFFF | 5,33:1 | 3:1 | 1.4.11 erfüllt |
| 6 – Schaltfläche, die inaktiv aussieht: Text | Text gegen Fläche der Schaltfläche | #A6A6A6 auf #EDEDED | 2,08:1 | 4,5:1 | 1.4.3 nicht erfüllt |
| 6 – dieselbe Schaltfläche: Grenze | Rand gegen Seite | #D4D4D4 auf #FFFFFF | 1,48:1 | keine – der Text macht die Schaltfläche erkennbar | 1.4.11 nicht verletzt |
| Stelle | Kriterium | Schwelle | Verhältnis | Urteil |
|---|---|---|---|---|
| 1 – Fließtext auf Farbfläche | 1.4.3 | 4,5:1 | 5,25:1 (Link bei Hover oder Fokus: 1,63:1) | erfüllt; im Hover- und Fokuszustand des Links nicht erfüllt |
| 2 – Platzhalter | 1.4.3 | 4,5:1 | 2,52:1 | nicht erfüllt |
| 3 – Text auf Foto | 1.4.3 | 3:1 und 4,5:1 | 1,33:1 an der hellsten Stelle | nicht erfüllt |
| 4 – Fokusrahmen | 1.4.11 | 3:1 | 1,86:1 | nicht erfüllt |
| 5 – Symbol-Schaltfläche | 1.4.11 | 3:1 | 5,33:1 | erfüllt |
| 6 – Schaltfläche, die inaktiv aussieht | 1.4.3 für den Text; 1.4.11 verlangt für den Rand nichts | 4,5:1 | 2,08:1 | 1.4.3 nicht erfüllt |
#6A1B9A) hat auf Weiß 9,39:1.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).#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.#5B6577: 5,88:1. Ein Rahmen rundherum ist nicht verlangt.#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.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.#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.#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.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).
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.
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; }
Zwölf neue Titel stehen im Regal neben dem Infotresen.
Leihfrist: 14 Tage
Vorlesestunde am Dienstag um 16 Uhr in der Kinderbücherei.
Anmeldung bis 2. November
| Medium | Frist |
|---|---|
| Bücher | 28 Tage |
| Zeitschriften | 14 Tage |
| Filme, Spiele | 7 Tage |
Zwölf neue Titel stehen im Regal neben dem Infotresen.
Leihfrist: 14 Tage
Vorlesestunde am Dienstag um 16 Uhr in der Kinderbücherei.
Anmeldung bis 2. November
| Medium | Frist |
|---|---|
| Bücher | 28 Tage |
| Zeitschriften | 14 Tage |
| Filme, Spiele | 7 Tage |
Am Samstag bleibt der Lesesaal ab 13 Uhr zu.
Ausleihe wie gewohnt
overflow: hidden). Zu lesen ist nur noch „Termine für“ und „Ausweis“.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.
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.
Roman · Leihfrist bis 14. November
Rückgabe in jeder Zweigstelle und am Automaten vor dem Haupteingang. Der Automat ist rund um die Uhr erreichbar.
Krimi · Leihfrist bis 21. November
Rückgabe in jeder Zweigstelle und am Automaten vor dem Haupteingang. Der Automat ist rund um die Uhr erreichbar.
Sachbuch · Leihfrist bis 28. November
Rückgabe in jeder Zweigstelle und am Automaten vor dem Haupteingang. Der Automat ist rund um die Uhr erreichbar.
Drei Tage vor Ablauf der Leihfrist
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.
Abholung am Infotresen
Wir legen das Buch sieben Tage für dich zurück.
Roman · zurzeit ausgeliehen
Zwei Vormerkungen liegen schon vor.
Öffne zuerst den Dialog über „Vormerken …“.
Bücher aus anderen Büchereien bestellen
Bestellen kannst du am Infotresen oder im Ausleihkonto. Wir schreiben dir, sobald das Buch da ist.
Angemeldet mit Ausweis 0000 123 456
Im Konto siehst du, was du ausgeliehen und vorgemerkt hast und ob Gebühren offen sind. Die Angaben werden einmal täglich aktualisiert.
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.aria-expanded).| Stelle | 1 – Esc schließt | 2 – Maus kann auf den Inhalt | 3 – bleibt stehen | 4 – erscheint bei Fokus, Esc schließt | Urteil 1.4.13 |
|---|---|---|---|---|---|
| Stelle 1 (A) | Sache des Browsers | Sache des Browsers | Sache des Browsers | erscheint nicht | erfüllt – Ausnahme |
| Stelle 2 (B) | ja | nein | ja | ja | nicht erfüllt |
| Stelle 3 (C) | ja | ja | ja | ja | erfü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“).
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.
Auf deiner Merkliste: 0 Titel
Auf deiner Merkliste: 0 Titel
Noch nichts gewählt.
Noch nichts gewählt.
Bringe die Titel in deine Reihenfolge: Ziehe einen Titel am Griff an die gewünschte Stelle.
Reihenfolge unverändert.
Bringe die Titel in deine Reihenfolge: Ziehe einen Titel am Griff an die gewünschte Stelle oder benutze die Pfeil-Schaltflächen.
Reihenfolge unverändert.
§ 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.
§ 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.
§ 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.
Die Karte zeigt die Hauptstelle.
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.
Unterschreibe im Feld mit der Maus, einem Stift oder dem Finger.
Das Feld ist leer.
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.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.: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.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.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.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.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.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.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).
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.
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.
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.
Neue Bücher, Lesungen und Termine – einmal im Monat per E-Mail.
Neue Bücher, Lesungen und Termine – einmal im Monat per E-Mail.
aria-describedby mit ihm verknüpft und wird nach Esc zusätzlich als Statusmeldung ausgegeben. Genau das verlangt der zweite Halbsatz des Kriteriums.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).
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.
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.
Tastenkürzel: j nächste, k vorige, s Stern, l löschen, ? Hilfe
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.
Tastenkürzel: j nächste, k vorige, s Stern, l löschen, ? Hilfe
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.
Tastenkürzel: j nächste, k vorige, s Stern, l löschen, ? Hilfe
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).
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.
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.
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.
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.
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.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.
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?
Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel A ruht.
Heute geöffnet von 10 bis 18 Uhr. Die Rückgabeklappe am Eingang Lindenstraße ist rund um die Uhr offen.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel B ruht.
Heute geöffnet von 10 bis 18 Uhr. Die Rückgabeklappe am Eingang Lindenstraße ist rund um die Uhr offen.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel C ruht.
Donnerstag, 19 Uhr, im Lesesaal. Der Eintritt ist frei, um Anmeldung wird gebeten.
Samstag von 10 bis 14 Uhr im Foyer. Der Erlös geht an den Förderverein.
Jeden Mittwoch um 16 Uhr in der Kinderbücherei, für Kinder ab vier Jahren.
1 von 3
Alle Veranstaltungen finden in der Hauptstelle statt.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel D ruht.
| Bereich | frei |
|---|---|
| Lesesaal | 12 |
| Gruppenraum | 3 |
| Lernkabinen | 5 |
Noch nicht aktualisiert.
Lernräume lassen sich bis zu drei Stunden am Tag reservieren.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel E ruht.
| Bereich | frei |
|---|---|
| Lesesaal | 12 |
| Gruppenraum | 3 |
| Lernkabinen | 5 |
Noch nicht aktualisiert.
Lernräume lassen sich bis zu drei Stunden am Tag reservieren.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Die Übungsseite beendet das Beispiel nach zwei Minuten. Beispiel F ruht.
Die Suche ist noch nicht gestartet.
: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.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.
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.
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.
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 Live aus dem Lesesaal
Standbild 2 Live aus dem Lesesaal
So verhält sich das Symbol auf der echten Seite:
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.
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.
Zwei Seiten derselben Website der Stadtbücherei Lindenau:
Zwei Seiten derselben Website der Stadtbücherei Lindenau:
Eine einzelne Seite. Nimm an, dass Kopf und Navigation genau so auf jeder Seite der Website stehen.
Eine einzelne Seite. Nimm an, dass Kopf und Navigation genau so auf jeder Seite der Website stehen.
header, nav, main und footer sowie Überschriften – mehrere Wege für verschiedene Arbeitsweisen.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ß.#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.
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.
Fünf Seiten derselben Website der Stadtbücherei Lindenau:
Fünf Seiten derselben Website der Stadtbücherei Lindenau:
Web-Anwendung „Mein Konto“ mit drei Ansichten. Wechsle die Ansicht und lies jedes Mal den Titel.
Web-Anwendung „Mein Konto“ mit drei Ansichten. Wechsle die Ansicht und lies jedes Mal den Titel.
#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.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).
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.
Donnerstag, 12. November 2026, 19 Uhr, Lesesaal. Der Eintritt ist frei, es gibt 40 Plätze.
Donnerstag, 12. November 2026, 19 Uhr, Lesesaal. Der Eintritt ist frei, es gibt 40 Plätze.
Die Stadtbücherei bleibt am Montag, 2. November, wegen der Inventur geschlossen. Öffnungszeiten im November
Lass das Menü zugeklappt und gehe mit Tab von „Menü“ bis „Öffnungszeiten im November“. Zähle die Tastendrücke.
Die Stadtbücherei bleibt am Montag, 2. November, wegen der Inventur geschlossen. Öffnungszeiten im November
Lass das Menü zugeklappt und gehe mit Tab von „Menü“ bis „Öffnungszeiten im November“. Zähle die Tastendrücke.
Seite „Ausweis verlängern“. Lade die Seite und gehe mit Tab von Anfang bis Ende durch.
Seite „Ausweis verlängern“. Lade die Seite und gehe mit Tab von Anfang bis Ende durch.
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).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.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.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.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.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.
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.
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
Link 4
| Kurs | Wann | Infos |
|---|---|---|
| Tablet-Hilfe | 3.11. 10 Uhr | gratis |
| Suchen im Katalog | 14.11. 15 Uhr | mehr |
| Kino für Kinder | 21.11. 11 Uhr | ab 3 Jahren |
Link 5
Link 6
Link 7
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.
p) wie der Text zum Lesesaal (H78). Ein Screenreader liest den Absatz auf einen Tastendruck vor.li) wie die Lesung (H77).th und scope zugeordnet (H79). Ohne diese Auszeichnung wäre der Kontext nur sichtbar.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.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.
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.
Start und Ziel in derselben Website der Stadtbücherei Lindenau:
Start und Ziel in derselben Website der Stadtbücherei Lindenau:
Die Seite gehört zur selben Website wie Beispiel A. Bewertet wird hier nur diese eine Seite.
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.
Ü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?
Der Leseausweis gilt zwölf Monate. Du verlängerst ihn am Infotresen oder im Ausleihkonto.
Gruppenräume für bis zu sechs Personen kannst du vier Wochen im Voraus reservieren.
Jeden Mittwoch um 16 Uhr lesen wir Kindern ab vier Jahren vor.
Der Leseausweis gilt zwölf Monate. Du verlängerst ihn am Infotresen oder im Ausleihkonto.
Gruppenräume für bis zu sechs Personen kannst du vier Wochen im Voraus reservieren.
Jeden Mittwoch um 16 Uhr lesen wir Kindern ab vier Jahren vor.
Die Stadtbücherei Lindenau hat rund 60.000 Medien, drei Standorte und einen Bücherbus.
Vom 19. bis 31. Oktober öffnet die Hauptstelle schon um 9 Uhr.
In der Bibliothek der Dinge stehen ab November Bohrmaschinen, Nähmaschinen und Gitarren bereit.
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).
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.
:focus-visible); dass er nach einem Mausklick auf einen Link fehlt, ist zulässig.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.#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.
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.
scroll-padding.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.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.
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?
Zoomstufe 100 %
Zoomen: zwei Finger auf der Karte auseinander- oder zusammenziehen. Verschieben: Karte ziehen. Tastatur: Plus und Minus zoomen, die Pfeiltasten verschieben.
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.
Roman
Eine Schaffnerin, ein vergessener Koffer und eine Stadt, die nachts anders aussieht.
Krimi
Am Auenweg verschwindet ein Ruderboot. Kommissarin Albrecht glaubt nicht an Zufall.
Sachbuch
Zwölf Grundteige, viel Geduld und ein Kapitel über das Scheitern.
Kinderbuch
Sternbilder zum Ausklappen, ab sechs Jahren.
Titel 1 von 4
Wischen nach links oder rechts wechselt den Titel, ebenso die beiden Schaltflächen. Tastatur: Pfeil links und Pfeil rechts.
Roman
Eine Schaffnerin, ein vergessener Koffer und eine Stadt, die nachts anders aussieht.
Krimi
Am Auenweg verschwindet ein Ruderboot. Kommissarin Albrecht glaubt nicht an Zufall.
Sachbuch
Zwölf Grundteige, viel Geduld und ein Kapitel über das Scheitern.
Kinderbuch
Sternbilder zum Ausklappen, ab sechs Jahren.
Titel 1 von 4
Wischen nach links oder rechts wechselt den Titel. Tastatur: Pfeil links und Pfeil rechts.
Roman
Eine Schaffnerin, ein vergessener Koffer und eine Stadt, die nachts anders aussieht.
Krimi
Am Auenweg verschwindet ein Ruderboot. Kommissarin Albrecht glaubt nicht an Zufall.
Sachbuch
Zwölf Grundteige, viel Geduld und ein Kapitel über das Scheitern.
Kinderbuch
Sternbilder zum Ausklappen, ab sechs Jahren.
Titel 1 von 4
Wischen nach links oder rechts wechselt den Titel, ebenso die Punkte unter dem Karussell. Tastatur: Pfeil links und Pfeil rechts.
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.
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.
Das stille Ufer liegt bis 14. November an der Ausleihe bereit.
Die Vormerkung für „Das stille Ufer“ ist gelöscht.
Nachtzug nach Lindenau liegt bis 15. November an der Ausleihe bereit.
Die Vormerkung für „Nachtzug nach Lindenau“ ist gelöscht.
Brot backen ohne Eile liegt bis 18. November an der Ausleihe bereit.
Die Vormerkung für „Brot backen ohne Eile“ ist gelöscht.
Ausweisnummer: verborgen
Die Nummer ist zu sehen, solange du die Schaltfläche gedrückt hältst. Mit der Tastatur schaltet sie um.
Steuerung der Übungsseite – gehört nicht zum Beispiel. Ohne Ton leuchtet die Taste nur auf.
Zuletzt gespielt: noch nichts
click: Sie löst erst beim Loslassen aus. Wer wegzieht und außerhalb loslässt, bricht ab.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.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.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.
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.
Die Zahlen stehen links neben der jeweiligen Stelle. Die Übungsseite sendet nichts ab; sie meldet nur, was ausgelöst wurde.
| Stelle | Sichtbarer Text | Zugänglicher Name | Urteil | Befehl mit dem sichtbaren Text (erwartet) |
|---|---|---|---|---|
| 1 | Betreff | Betreff | erfüllt | trifft |
| 2 | Anhängen | Datei anhängen | erfüllt, mit Empfehlung | unsicher, je nach Sprachsteuerung |
| 3 | Rückruf erwünscht | Rückruf erwünscht | erfüllt | trifft |
| 4 | Senden | Formular abschicken | nicht erfüllt | trifft nicht |
| 5 | Hilfe | Hilfe | erfüllt | trifft |
| 6 | keiner (Lupe) | Suchen | nicht anwendbar | kein sichtbarer Text zum Sprechen |
| 7 | Senden | Formular absenden | nicht erfüllt (Kursposition) | trifft voraussichtlich nicht |
| 8 | Abmelden | Abmelden vom Rundbrief | erfüllt | trifft in der Regel |
label, beim Link aus seinem Inhalt. Das sind die drei passenden Stellen der Übung.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.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.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.
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.
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.
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.
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.
Roman
Krimi
Sachbuch
Kinderbuch
Tipp: Gerät nach rechts neigen blättert weiter, nach links zurück.
Titel 1 von 4
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.
Roman
Krimi
Sachbuch
Kinderbuch
Tipp: Gerät nach rechts neigen blättert weiter, nach links zurück.
Titel 1 von 4
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).
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.
Dauer der Reservierung
Gewählt: 2 Stunden
Griff ziehen. Tastatur: Pfeiltasten, Pos1 und Ende.
Dauer der Reservierung
Gewählt: 2 Stunden
Griff ziehen, auf die Leiste tippen oder die Schaltflächen benutzen. Tastatur: Pfeiltasten, Pos1 und Ende.
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.
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.
Zoomstufe 100 %
Zoomen: Schaltflächen oder zwei Finger. Verschieben: Karte ziehen. Tastatur: Plus und Minus zoomen, die Pfeiltasten verschieben.
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.
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.
Vorgemerkte Titel liegen zehn Tage für dich bereit.
Jeden Titel kannst du zweimal verlängern. Einzelheiten stehen in der Ziel 4Hausordnung der Stadtbücherei.
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.
Die Zahl steht jeweils links neben ihrem Ziel; Ziel 6 ist das erste der drei Symbole.
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.
| Ziel | Maß (Breite × Höhe) | Abstand | Urteil |
|---|---|---|---|
| 1 „Alle verlängern“ | 156 × 36 | nicht nötig | erfüllt |
| 2 Hinweis-Symbol | 20 × 20 | nächstes Ziel je nach Fensterbreite und Schrift 50 bis 140 Pixel von der Mitte entfernt | erfüllt (Abstand) |
| 3 Symbol „verlängern“ | 20 × 20 | Mittelpunkte 22 Pixel auseinander | nicht erfüllt |
| 4 Link „Hausordnung“ | 85 bis 115 × 16 bis 21, je nach Schrift | nicht nötig | erfüllt (Ausnahme: im Fließtext) |
| 5 Drucker-Symbol | 16 × 16 | von der Mitte bis zum Rand von „Sortieren“ 10 Pixel | erfüllt (Ausnahme: gleichwertig) |
| 6 Symbole „Ansicht“ | 20 × 20 | Mittelpunkte 28 Pixel auseinander | erfüllt (Abstand) |
| 7 Lesezeichen | 28 × 28 | nicht nötig | erfüllt |
| 8 Kontrollkästchen | 13 × 13 | nicht nötig | erfüllt (Ausnahme: vom Browser bestimmt) |
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.
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.
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.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.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).
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.
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.
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.
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.
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
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.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.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.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.
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.
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.
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?
Adresse: buecherei-lindenau.example/buecherbus?region=nord
Seite wird geladen …
Adresse: buecherei-lindenau.example/buecherbus?region=nord
Seite wird geladen …
Adresse: buecherei-lindenau.example/buecherbus?region=nord
Seite wird geladen …
Die Seite lädt nach Auswahl einer Region neu.
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.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.
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.
Drei Seiten derselben Website der Stadtbücherei Lindenau:
Die übrigen Seiten erreichst du über die Navigation der Website.
Drei Seiten derselben Website der Stadtbücherei Lindenau:
Die übrigen Seiten erreichst du über die Navigation der Website.
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.
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.
Drei Seiten derselben Website der Stadtbücherei Lindenau:
Die übrigen Seiten erreichst du über die Navigation der Website.
Drei Seiten derselben Website der Stadtbücherei Lindenau:
Die übrigen Seiten erreichst du über die Navigation der Website.
| Funktion | Seite 1: Start | Seite 2: Ausleihe | Seite 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.
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.
Drei Seiten derselben Website der Stadtbücherei Lindenau:
Die übrigen Seiten erreichst du über die Navigation der Website.
Drei Seiten derselben Website der Stadtbücherei Lindenau:
Die übrigen Seiten erreichst du über die Navigation der Website.
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.
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.
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).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.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.
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?
legend).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.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.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.
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?
In dieser Übung gibt es keine Konten: Jede Anmeldung wird abgelehnt. Gib nur ausgedachte Daten ein.
aria-describedby damit verbunden; die Schaltfläche folgt als nächster Tab-Stopp.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.
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.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Noch ist nichts gebucht. Mit „Zahlungspflichtig anmelden“ wird die Anmeldung verbindlich.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Danke für deine Frage. Die Antwort erscheint in den nächsten Tagen unter „Häufige Fragen“.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Hier verwaltest du deine Vormerkungen.
Du hast keine Vormerkungen.
Bis Mitternacht kannst du sie wiederherstellen. Dein Platz auf der Warteliste bleibt so lange für dich reserviert.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Hier verwaltest du deine Vormerkungen.
Du hast keine Vormerkungen.
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.
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.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Die Medien kommen an die Lieferadresse, die Rechnung über 4,00 € an die Rechnungsadresse. In dieser Übung wird nichts gesendet.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Die Medien kommen an die Lieferadresse, die Rechnung über 4,00 € an die Rechnungsadresse. In dieser Übung wird nichts gesendet.
Gib nur ein ausgedachtes Passwort ein. Es wird nichts gespeichert.
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.
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.
autocomplete="username" und autocomplete="current-password" ausgezeichnet, sodass Browser und Passwortmanager sie füllen können (Technik H100). Mehr verlangt die Anmeldung nicht.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.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.
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.
Dein Ausweis gilt ein Jahr. Verlängern kannst du ihn online im Konto oder an der Theke – ab vier Wochen vor Ablauf.
Die Rückgabe ist zu den Öffnungszeiten an der Theke möglich, außerhalb davon über die Rückgabeklappe am Eingang Lindenallee.
Dein Ausweis gilt ein Jahr. Verlängern kannst du ihn online im Konto oder an der Theke – ab vier Wochen vor Ablauf.
Die Rückgabe ist zu den Öffnungszeiten an der Theke möglich, außerhalb davon über die Rückgabeklappe am Eingang Lindenallee.
Fachtagung „Lesen im Quartier“ am 14. November in der Hauptstelle
Fachtagung „Lesen im Quartier“ am 14. November in der Hauptstelle
Zu den beiden Links „Programm“: In dieser Übung ist kein PDF hinterlegt. Die Links führen nur zu diesem Hinweis.
Übung „Hör hin – schreib mit“: Bei vier der acht Fassungen fehlt etwas.
aria-expanded von false auf true setzt.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.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.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.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.aria-label, Rolle Schaltfläche. Einen Zustand hat diese Schaltfläche nicht.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.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:
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.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)“.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.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“.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:
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.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).
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.
12 Termine gefunden
12 Termine gefunden
Merkliste: 0 Titel
Roman · Buch · verfügbar in der Hauptstelle
Sende das Formular einmal leer ab.
Tippe eine Adresse ohne @ ein und gehe mit Tab ins nächste Feld.
Tippe eine Adresse ohne @ ein und gehe mit Tab ins nächste Feld.
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.aria-live (F103). Mit dem Screenreader auf der Schaltfläche hörst du nach dem Auslösen nichts.role="status".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.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“).
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?
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.
Für Erwachsene kostet der Ausweis 12 Euro im Jahr. Kinder und Jugendliche bis 18 Jahre lesen kostenlos.
Du verlängerst den Ausweis an der Theke oder selbst in deinem Konto. Die Verlängerung gilt für zwölf Monate.
Melde den Verlust sofort an der Theke oder unter 0000 123456. Ein Ersatzausweis kostet 3 Euro.
Für Erwachsene kostet der Ausweis 12 Euro im Jahr. Kinder und Jugendliche bis 18 Jahre lesen kostenlos.
Du verlängerst den Ausweis an der Theke oder selbst in deinem Konto. Die Verlängerung gilt für zwölf Monate.
Melde den Verlust sofort an der Theke oder unter 0000 123456. Ein Ersatzausweis kostet 3 Euro.
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.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):
Kreuzliste:
| Kriterium | Fassung A | Fassung B |
|---|---|---|
| 1.3.1 Info und Beziehungen | nicht erfüllt – die Fragen sehen aus wie Überschriften, sind aber div; in der Überschriftenliste des Screenreaders fehlen sie | erfü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 Bereich | erfüllt – wie A |
| 1.4.10 Umfluss (Reflow) | erfüllt – bei 320 CSS-Pixel bricht der Text um, nichts wird abgeschnitten | erfüllt – wie A |
| 1.4.11 Nicht-Text-Kontrast | nicht 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 Tastatur | nicht erfüllt – Kopfzeilen nicht fokussierbar, keine Tastenbedienung; zugeklappte Antworten ohne Maus nicht erreichbar | erfüllt – Tab, Enter, Leertaste |
| 2.4.3 Fokus-Reihenfolge | nicht erfüllt – der Link im zugeklappten zweiten Bereich bekommt den Fokus, obwohl er unsichtbar ist | erfüllt – zugeklappte Inhalte sind hidden; aufgeklappte folgen direkt auf ihre Kopfzeile |
| 2.4.7 Fokus sichtbar | nicht 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 hoch | erfüllt – wie A |
| 4.1.2 Name, Rolle, Wert | nicht erfüllt – keine Rolle, kein Zustand; im Barrierefreiheitsbaum steht nur Text | erfü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.
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“?
Gruppenraum 2 · Donnerstag, 15. Oktober · 16 bis 18 Uhr
Der Dialog lässt sich über jede seiner drei Schaltflächen wieder schließen.
Gruppenraum 2 · Donnerstag, 15. Oktober · 16 bis 18 Uhr
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.
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".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):
Kreuzliste:
| Kriterium | Fassung A | Fassung B |
|---|---|---|
| 1.1.1 Nicht-Text-Inhalt | erfü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 Beziehungen | erfüllt – Titel als Überschrift und über aria-labelledby mit dem Dialog verknüpft | nicht 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 erreichbar | erfüllt – wie A |
| 1.4.11 Nicht-Text-Kontrast | erfüllt – Kreuz 15,7:1 auf Weiß, Schaltflächenränder und Fokusrahmen über 3:1 | erfüllt – wie A |
| 2.1.1 Tastatur | erfüllt – alles mit Tab, Enter, Leertaste, Esc | erfü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 Tastaturfalle | erfüllt – der Fokus wird im Dialog gehalten, aber Esc und drei Schaltflächen führen hinaus | erfüllt – der Fokus wird nirgends festgehalten |
| 2.4.3 Fokus-Reihenfolge | erfüllt – Fokus hinein, im Dialog gehalten, zurück zum Auslöser | nicht erfüllt – Fokus bleibt hinter dem Dialog, Hintergrund per Tab erreichbar, nach dem Schließen ist der Fokus verloren |
| 2.4.7 Fokus sichtbar | erfüllt | erfü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-Pixel | erfü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, Wert | erfü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 Statusmeldungen | erfü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.
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?
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.
Wer in den Ferien drei Bücher liest, bekommt eine Urkunde und ein Eis.
120 Titel sind dazugekommen, von Krimi bis Sachbuch. Ausleihe wie gewohnt für vier Wochen.
Bring mit, was klemmt oder wackelt. Werkzeug, Hilfe und Kaffee gibt es von 10 bis 14 Uhr.
Dienstag bis Freitag ist die Bücherei künftig bis 19 Uhr für dich da.
Der Folienwechsel reagiert auch auf Wischen nach links oder rechts – mit dem Finger oder mit gedrückter Maustaste.
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.
Wer in den Ferien drei Bücher liest, bekommt eine Urkunde und ein Eis.
120 Titel sind dazugekommen, von Krimi bis Sachbuch. Ausleihe wie gewohnt für vier Wochen.
Bring mit, was klemmt oder wackelt. Werkzeug, Hilfe und Kaffee gibt es von 10 bis 14 Uhr.
Dienstag bis Freitag ist die Bücherei künftig bis 19 Uhr für dich da.
Der Folienwechsel reagiert auch auf Wischen nach links oder rechts – mit dem Finger oder mit gedrückter Maustaste.
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.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):
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:
| Kriterium | Fassung A | Fassung B |
|---|---|---|
| 1.1.1 Nicht-Text-Inhalt | erfüllt – die Illustrationen sind Schmuck neben dem Text und haben ein leeres alt; Pfeile mit aria-hidden, die Schaltflächen haben Namen | nicht erfüllt – img ohne alt-Attribut |
| 1.3.1 Info und Beziehungen | erfüllt – Bereich mit Namen, Folien als Gruppen „1 von 4“ bis „4 von 4“, Überschriften h5 und h6 | erfü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:1 | erfüllt – wie A |
| 1.4.11 Nicht-Text-Kontrast | erfüllt – Punkte 4,8:1 und 15,7:1, Pfeile 15,7:1 | nicht erfüllt – die nicht gewählten Punkte haben 1,4:1 (#d5d9df auf Weiß) |
| 2.1.1 Tastatur | erfüllt – alle Schaltflächen per Tab und Enter oder Leertaste | nicht erfüllt – Folienwechsel nur mit Maus oder Finger |
| 2.2.2 Pausieren, beenden, ausblenden | erfüllt – „Wechsel anhalten“; Halt bei Tastaturfokus, Pause bei Mauszeiger | nicht 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-Reihenfolge | erfüllt – unsichtbare Folien sind nicht fokussierbar | nicht erfüllt – Tab hält an vier Links, von denen drei unsichtbar sind |
| 2.4.7 Fokus sichtbar | erfüllt | nicht erfüllt – outline: none an den Links, auch am sichtbaren |
| 2.5.1 Zeigergesten | erfüllt – Wischen ist möglich, Zurück und Weiter tun dasselbe mit einem Klick | erfü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-Pixel | nicht 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, Wert | erfü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.
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.
Steuerung der Übungsseite – gehört nicht zum Beispiel.
Noch ist nichts beantragt. Stimmt alles?
Steuerung der Übungsseite – gehört nicht zum Beispiel.
aria-describedby, und sie sagt, wie es richtig geht. Sind alle Angaben in Ordnung, kommt zuerst der Prüfschritt; erst dort wird kostenpflichtig beantragt.| 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.
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.
Diesen Ablauf nimmst du für den Tastatur-Durchgang und für alles, was Formulare und Prozesse betrifft. Er ist in beiden Sites derselbe:
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.
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.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.