svg-text-alternative-present

<svg> muss eine Textalternative bereitstellen

automaticWCAG 1.1.1 (A)Konfidenz: highSchweregrad: seriousperceivable

Prüft, dass Inline-<svg>-Elemente über ein <title>-Element oder einen ARIA-Namen eine Textalternative bereitstellen (ein <desc>-Element allein zählt nicht).

Anwendbarkeit. Gilt für Inline-<svg>-Elemente, die assistiven Technologien bereitgestellt werden UND offenbar etwas vermitteln sollen. „Soll etwas vermitteln“ wird deterministisch angenähert durch mindestens eines der folgenden Merkmale:

  • role="img", role="graphics-symbol" oder role="graphics-document" am SVG-Wurzelelement selbst (die Rollen des WAI-ARIA Graphics Module, neben img). Erstreckt sich NICHT auf beliebige Nachfahren mit role="img"/"graphics-symbol"/"graphics-document" innerhalb eines <svg>. Diese Prüfung betrifft nur die <svg>-Wurzel; role-img-text-alternative-present deckt dieselben drei Rollen auf jedem anderen Element ab, auch auf verschachtelten SVG-Formen (das eigene Fehlerbeispiel von ACT 7d6734: eine einfache <svg>-Wurzel mit einem verschachtelten <circle role="graphics-symbol">).
  • ein nicht leeres aria-label / aria-labelledby (aria-label="" benennt nichts und signalisiert keine Absicht)
  • <title> oder <desc> als direktes Kind vorhanden, an beliebiger Stelle unter den Kindern (SVG-AAM); jeweils das erste zählt (desc allein ist nur ein Signal für die Anwendbarkeit, siehe @expectation)
  • fokussierbar/per Tab erreichbar (z. B. tabindex, native Fokussierbarkeit)

Bilder mit role="presentation" oder role="none" sind nur ausgeschlossen, wenn sie nicht fokussierbar sind. Elemente, die ansonsten aus dem Accessibility Tree ausgeblendet sind, bleiben betroffen, wenn sie per Tab fokussierbar sind oder über IDREF-Beziehungen referenziert werden (gemäß den Eignungsprüfungen der Engine).

Erwartung. Jedes betroffene <svg>-Element stellt eine Textalternative bereit über:

  • nicht leeren Text in seinem ersten direkten <title>-Kind, an beliebiger Stelle unter den Kindern (ein leeres erstes <title> benennt nichts), ODER
  • einen ARIA-Namen (aria-label / aria-labelledby).

Ein <desc>-Element allein genügt NICHT: Laut SVG Accessibility API Mappings §7.1 trägt <desc> immer nur zur zugänglichen BESCHREIBUNG bei, nie zum zugänglichen NAMEN. Ein <svg> mit nur einem <desc> und ohne <title>/ARIA-Namen ist trotzdem „betroffen“ (desc zeigt an, dass die Grafik etwas vermitteln soll), schlägt aber fehl.

Beispiele

pass
<svg role="img"><title>Close</title></svg>

<title> liefert den zugänglichen Namen für ein SVG mit expliziter img-Rolle.

fail
<svg role="img"></svg>

Kein <title> und kein ARIA-Name. Ein <desc> allein würde nicht genügen: Es beschreibt das Bild, benennt es aber nicht.

Verwandte Regeln

Quellcode ansehen