Abbildungen im Web
Grundsätzliches zu Grafiken
Die folgende Zusammenstellung bezieht sich zum Großteil auf Heather Migliorisi mit ihrem Beitrag auf CSS-TicksFall 1: Dekografiken
Wenn eine Grafik rein dekorativ ist, braucht sie keinen Alternativtext. Alle img-Tags benötigen das alt-Attribut, um gültig zu sein, aber das Attribut kann leer gelassen werden (kein Leerzeichen)
<img src="pathtofile.svg" alt="">
und damit trotzdem gültig sein.Fall 2: umgebender Text beschreibt Grafik


<img ... alt="Eine Ansicht von weather.com für Pittsburgh mit mehreren verstreuten Stürmen, die von West nach Ost ziehen.">
Fall 3: Die Grafik erfüllt eine Funktion
Ist dies der Fall (z.B. Link ohne Beschriftung mit lediglich einem Icon), sollte sie dem Benutzer vermittelt werden.

<a href="https://codepen.io/hmig">
<img src="../img/codepen1.png"
alt="Zeige die Codepen Seite von Heather Migliorisi"></a>
Weitere gute Hinweise zur Entscheidung zum Alternativtext und Co.:
Informative Bilder bei Jan Hellbusch
Tutorial zum Thema Bilder bei W3.org
Gut fürs Image (Handreichung DVBS)
SVG und Barrierefreiheit
Warum SVG?
Skalierbare Vektorgrafiken (SVG) sind das bevorzugte Grafikformat im Webbereich, wann immer eine Pixelgrafik sich vermeiden lässt (Ausnahme sind beispielsweise Fotos). Durch die verlustfreie Vergrößerbarkeit ist dieses Grafikformat wie kein anderes für responsives Design geeignet und ist die vom W3C (World Wide Web Consortium) empfohlene Variante. Zusätzlich unterstützt es Animationen, ist über das DOM beispielsweise mit Javaskript manipulierbar und ist damit für interaktive Elemente geeignet. Vektorbilder bestehen aus Linien, Strichen und mit Farbe gefüllten Formen, welche über Koordinaten und weitere Eigenschaften definiert sind (z.B. eine Ellipse).Einfaches Beispiel
<svg viewBox="0 0 300 180" role="img" aria-labelledby="titleElli descElli">
<title id="titleElli">Ellipsentitel</title>
<desc id="descElli">Beschreibung</desc>
<ellipse cx="100" cy="100" rx="90" ry="50" stroke="black" stroke-width="7" fill="yellow">
</svg>
Das kann wesentlich komplexer werden - hier gleich ein Beispiel, in welchem title und desc angegeben sind, aber kein aria-labelledby. <svg viewBox="0 0 138 26" stroke="#000" role="img">
<title id="titleCodepen">Codepen Logo</title>
<desc id="descCodepen">Beschreibung</desc>
<path d="m 1.15,8.45 11,-7.3 11,7.3 v 7.4 l -11,7.3 -11,-7.3 z m 0,0 11,7.4 11,-7.4 m 0,7.4 -11,-7.4 -11,7.4 m 11,-14.7 v 7.3 m 0,7.4 v 7.3"</path></svg>
Struktueller Aufbau
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>HTML5 Seite</title>
</head>
<body>
<svg xmlns="https://www.w3.org/2000/svg" ...>
<title>...</title>
<path fill="#5DD7FC" d="M0.5… />
</svg>
</body>
</html>
Möchte man Verlinkungen einfügen muss man zusätzlich die Definition von xlink
durch folgenden Zusatz hinzufügen xmlns:xlink="https://www.w3.org/1999/xlink"
. Dann lassen sich über IDs und xlink:href="..." Links innerhalb der SVG erzeugen.
Möglichkeiten der Einbindung
Option 1: im <img>-Tag
Wird eine SVG Grafik in ein img-Tag eingebunden, so ist die Grafik wie jede Abbildung zu handhaben. Ein Alternativtext wird über das alt-Attribut hinzugefügt. Die Richtlinien aus "Grundsätzliches zu Grafiken" sind dabei zu berücksichtigen. Soll die Grafik nicht weiterverarbeitet werden (Stilanpassung, Animation, Manipulation mit Javascript) so ist diese Einbindung ausreichend. Im DOM ist sie aber nicht vorhanden und kann daher nicht weiter angepasst werden.Aktuell ist dieser Weg aus Sicht der Barrierefreiheit der zuverlässigste. Er bietet jedoch keine Option, interaktive Elemente zu nutzen oder gezielte Anpassungen vorzunehmen.
Option 2: inline im <svg> Tag
SVG-Code kann direkt in die html-Seite geschrieben werden. Dadurch bleiben die Funktionen von SVG erhalten und es ist derzeit die beste Möglichkeit für eine nachträgliche Manipulation. Die Bildbeschreibung kann dann aber nicht in ein alt-Attribut mitgegeben werden, sondern muss über ein title-Tag (kurzer Name) und über desc-Tag die Beschreibung übergeben werden. Leider sind nicht alle Screenreader darauf ausgelegt, die beiden Elemente auszulesen, daher sollte es wie folgt umgesetzt werden: Die beiden Tags erhalten jeweils IDs<title id="TitleID_1">Titel der SVG</title>
<desc id="DescID_1">Ausführlichere Beschreibung der Grafik.</desc>
Anschließend ist im <svg>-tag noch der Verweis hinzuzufügen, damit alle Screenreader die Information erhalten:
aria-labelledby="TitleID_1 DescID_1"
ergänzend sollte, damit alle Browser eine korrekte Ausgabe ermöglichen im svg-Tag role="img"
ergänzt werden.
Ein großer Vorteil dieser Einbindung ist die Option beispielsweise über einen Knopfdruck die Linienstärke erhöhen zu können, andere Farbgebungen anzulegen oder Elemente auszublenden.
weitere Optionen
Neben der Einbindung im img-Tag und der inline-Einbindung sind verschiedene andere Optionen von technischer Seite her möglich, aber nicht barrierefrei. Daher sollte die Einbindung über <object>, <iframe> oder <embed> Tags vermieden werden. Falls aus irgendeinem Grunde darauf nicht verzichtet werden kann, so muss eine Fallbackalternative mit Alternativtext ergänzend hinzugefügt werden.Beispiele
- Beispielseite 1 - reine Bilddatei
- Beispielseite 2 - Säulendiagramm
- Beispielseite 3 - Komplexerer Ablauf
Hilfreiches Tool für die Optimierung von SVG (v.a. Entschlackung)
zurück zur Hauptseite