Scalable Vector Graphics, kurz SVG, gehören heute ganz selbstverständlich zum modernen Web. Logos, Icons, Diagramme, Interface-Elemente oder illustrative Grafiken werden längst häufig als Vektoren ausgeliefert – aus gutem Grund. Eine sauber aufgebaute SVG bleibt auf kleinen wie großen Bildschirmen scharf, ist oft erstaunlich leichtgewichtig und lässt sich je nach Einbindungsart sehr unterschiedlich weiterverarbeiten. Genau darin liegt ihre Stärke, aber auch die eigentliche Herausforderung.
Denn SVG ist nicht einfach nur eine Bilddatei. Das Format ist strukturell lesbarer Code. Und deshalb macht es einen erheblichen Unterschied, ob eine Grafik als externe Datei eingebunden, direkt ins HTML geschrieben oder als dekoratives Element im CSS verwendet wird. Wer SVG im Projektalltag sinnvoll einsetzen will, sollte also nicht nur das Format kennen, sondern vor allem die jeweiligen Einbindungsarten – und ihre Konsequenzen.
Die einfachste Lösung ist oft auch die sinnvollste. Wenn eine SVG-Datei bereits vorliegt und wie ein normales Bild ausgegeben werden soll, ist das img-Element in vielen Fällen die beste Wahl.
<figure>
<img src="/assets/logo.svg" alt="Logo der urbanstudio GmbH" width="200" height="60" loading="lazy"decoding="async">
</figure>
Diese Form der Einbindung ist sauber, robust und schnell verständlich. Das Markup bleibt schlank, die Grafik verhält sich wie ein gewöhnliches Bild und lässt sich problemlos responsiv skalieren. Für Logos, Illustrationen oder statische Grafiken ist das oft genau richtig.
Allerdings endet die Bequemlichkeit dort, wo die Grafik selbst Teil der Oberfläche werden soll. Wer einzelne Flächen einfärben, Zustände wechseln, Linien animieren oder Pfade per JavaScript gezielt ansprechen möchte, stößt mit img schnell an Grenzen. Das SVG wird in diesem Fall wie ein Bild behandelt – nicht wie eine offen zugängliche Struktur.
Sobald eine Grafik nicht nur angezeigt, sondern aktiv gestaltet oder verändert werden soll, ist Inline-SVG meist die spannendere Variante. Dabei wird der SVG-Code direkt in das HTML-Dokument eingebettet.
<svg viewBox="0 0 24 24" role="img" aria-label="Suche" xmlns="http://www.w3.org/2000/svg">
<title>Suche</title>
<circle cx="11" cy="11" r="7" fill="none" stroke="currentColor" stroke-width="2" />
<path d="M16.5 16.5L21 21" stroke="currentColor" stroke-width="2" stroke-linecap="round" />
</svg>
Der große Vorteil liegt auf der Hand: Die SVG ist damit Teil des DOM. Einzelne Elemente lassen sich mit CSS gestalten, mit JavaScript manipulieren und viel präziser in ein Interface einbinden. Gerade für Icons, UI-Komponenten oder grafische Zustände ist das oft die elegantere Lösung. Wer mit currentColor , CSS-Variablen oder Theme-Systemen arbeitet, bekommt hier ein sehr flexibles Werkzeug.
Natürlich ist diese Freiheit nicht kostenlos. Komplexe SVGs können das HTML aufblähen und Templates unübersichtlich machen. Inline-SVG ist deshalb vor allem dort sinnvoll, wo die zusätzliche Kontrolle wirklich gebraucht wird. Für eine simple statische Grafik wäre es oft unnötig aufwendig, für ein anpassbares Interface-Element hingegen genau richtig.
Wenn ein Icon oder grafisches Element mehrfach auf einer Seite oder in einer Anwendung vorkommt, muss der Code nicht jedes Mal neu notiert werden. Stattdessen lässt sich mit einem Sprite-System arbeiten. Das Symbol wird einmal definiert und anschließend an verschiedenen Stellen referenziert.
<svg xmlns="http://www.w3.org/2000/svg" style="display:none;">
<symbol id="icon-arrow" viewBox="0 0 24 24">
<path d="M5 12h12" stroke="currentColor" stroke-width="2" />
<path d="M13 6l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2" />
</symbol>
</svg>
<svg class="icon" role="img" aria-label="Weiter">
<use href="#icon-arrow"></use>
</svg>
Das ist besonders bei Icon-Sets, Navigationssystemen und Buttons interessant. Der Code bleibt konsistent, die Pflege wird einfacher und wiederkehrende Elemente lassen sich zentral verwalten. In größeren Projekten ist das oft deutlich angenehmer, als dieselbe SVG immer wieder inline zu kopieren.
SVG kann ebenso als Hintergrundbild eingesetzt werden. Das ist vor allem dann sinnvoll, wenn die Grafik dekorativen Charakter hat und nicht als eigenständiger Inhalt verstanden werden muss.
.button-download::before{
content:"";
display:inline-block;
width:1em;
height:1em;
margin-right:.5rem;
background-image:url("/assets/icons/download.svg");
background-repeat:no-repeat;
background-size:contain;
background-position:center;
}
Für kleine Marker, Muster, Hintergrundflächen oder ornamentale Interface-Details ist das ein sehr brauchbarer Weg. Das HTML bleibt schlank, die Gestaltung sitzt dort, wo sie hingehört, und die Grafik lässt sich gut in ein Layout integrieren.
Sobald die SVG allerdings inhaltlich relevant wird, ist dieser Ansatz nicht mehr ideal. Ein CSS-Hintergrund trägt keine semantische Bedeutung, hat kein alt -Attribut und ist nicht dafür gedacht, von Screenreadern als Bildinhalt interpretiert zu werden. Für Dekoration ist das korrekt, für bedeutungstragende Grafiken nicht.
Auch per object lässt sich SVG einbinden. Diese Methode ist vor allem dann interessant, wenn die Grafik stärker als eigenständiges Dokument verstanden werden soll.
<object data="/assets/chart.svg" type="image/svg+xml" width="600" height="300">
<img src="/assets/chart.png" alt="Diagramm als Fallback">
</object>
Das kann in bestimmten Sonderfällen nützlich sein, etwa wenn ein Fallback vorgesehen werden soll oder wenn eine Grafik bewusst gekapselt geladen wird. Im typischen Frontend-Alltag ist diese Variante jedoch eher die Ausnahme. Sie ist meist schwerfälliger als img und weniger direkt als Inline-SVG. Gerade in Redaktionssystemen oder CMS-Umgebungen ist sie deshalb oft nicht die erste Wahl.
Eine weitere Möglichkeit besteht darin, SVG direkt als Data URI einzubetten, meist im CSS. Das spart eine zusätzliche Datei, macht den Code aber schnell sperrig.
.logo-mark{
width:48px;
height:48px;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='10' fill='%23025087'/%3E%3C/svg%3E");
background-repeat:no-repeat;
background-size:contain;
}
Für sehr kleine, gezielte Einsätze kann das praktisch sein. Als allgemeine Strategie empfiehlt es sich aber selten. Sobald SVGs komplexer werden, mehrfach im Projekt vorkommen oder später bearbeitet werden sollen, leidet vor allem die Lesbarkeit. Technisch möglich ist vieles – sinnvoll ist meist die Lösung, die auch in ein paar Monaten noch wartbar bleibt.
Auch das picture-Element lässt sich mit SVG kombinieren. Relevant wird das vor allem dann, wenn unterschiedliche Quellen oder Fallbacks gezielt gesteuert werden sollen.
<picture>
<source srcset="/assets/illustration.svg" type="image/svg+xml">
<img src="/assets/illustration.png" alt="Illustration">
</picture>
Im Alltag bleibt das dennoch eher ein Spezialfall. Wer einfach nur eine SVG ausgeben möchte, fährt mit img meist direkter und verständlicher. picture lohnt sich dort, wo tatsächlich verschiedene Bildvarianten in einer sauberen Logik zusammenspielen sollen.
Besonders spannend wird SVG dort, wo Bewegung ins Spiel kommt. Denn Vektorgrafiken lassen sich nicht nur scharf darstellen, sondern oft auch sehr präzise animieren. Linien können gezeichnet wirken, Flächen sich einfärben, Gruppen rotieren oder Zustände weich ineinander übergehen. Gerade in Interfaces, bei erklärenden Grafiken oder kleinen Microinteractions entsteht dadurch ein echter Mehrwert.
Dabei muss Animation nicht spektakulär sein. Oft genügt schon ein dezenter Übergang oder eine kleine visuelle Reaktion, um eine Oberfläche verständlicher und hochwertiger wirken zu lassen. Voraussetzung dafür ist allerdings meist, dass die SVG inline eingebunden oder gezielt als Struktur ansprechbar ist. Wer sie nur per img lädt, verschenkt viele dieser Möglichkeiten.
Das Thema selbst ist groß genug für einen eigenen Beitrag. Zwischen CSS-Animationen, JavaScript-Steuerung, Performance und Barrierefreiheit gibt es hier genug Stoff, um genauer hinzusehen.
In WordPress taucht beim Thema SVG regelmäßig eine zusätzliche Hürde auf: Der Upload ist nicht in jedem Setup ohne Weiteres vorgesehen. Technisch lässt sich das über den MIME-Type-Filter lösen.
function us_add_svg_upload_support($mimes){
$mimes['svg'] = 'image/svg+xml';
return $mimes;
}
add_filter('upload_mimes', 'us_add_svg_upload_support');
Damit beginnt die Arbeit in vielen Projekten allerdings erst. In der Praxis geht es selten nur darum, eine SVG-Datei hochladen zu dürfen. Häufig müssen Grafiken farblich in ein Designsystem eingebunden, responsiv angepasst, bereinigt oder für bestimmte Komponenten umgebaut werden. Gerade exportierte Dateien aus Illustrator, Figma oder anderen Tools enthalten oft unnötige Attribute, verschachtelte Gruppen, fest eingetragene Maße oder Pfade, die für den späteren Einsatz im Frontend erst sinnvoll strukturiert werden müssen.
Genau an dieser Stelle entstehen viele Rückfragen. Logos sollen einfärbbar werden, Icons in verschiedenen Zuständen funktionieren, Grafiken auf Hover reagieren oder Animationen vorbereitet werden. Manchmal muss auch schlicht aufgeräumt werden, damit aus einer exportierten Datei überhaupt ein wartbares Stück Frontend wird.
Die passende Methode hängt weniger von der Technik als vom Einsatzzweck ab. Soll eine Grafik einfach nur dargestellt werden, ist img häufig ideal. Soll sie Teil eines lebendigen Interface-Systems werden, führt oft kein Weg an Inline-SVG vorbei. Für wiederkehrende Icons kann ein Sprite-System mit symbol und use sinnvoll sein. Dekorative Elemente gehören meist gut aufgehoben ins CSS. Und Sonderfälle wie object , picture oder Data URIs haben ihre Berechtigung dort, wo der konkrete Anwendungsfall sie tatsächlich verlangt.
Die Stärke von SVG liegt gerade darin, dass das Format so flexibel ist. Diese Flexibilität ist jedoch nur dann ein Vorteil, wenn sie bewusst genutzt wird. Wer jede Einbindungsart kennt, muss nicht alles einsetzen – aber kann für den jeweiligen Fall die richtige Entscheidung treffen.
SVG gehört zu den nützlichsten Formaten im modernen Web. Es ist scharf, skalierbar, oft ressourcenschonend und je nach Einbindung erstaunlich gut kontrollierbar. Die eigentliche Herausforderung liegt nicht in der Datei selbst, sondern in ihrer sinnvollen Verwendung: Wie soll sie eingebunden werden? Welche Teile müssen steuerbar sein? Welche Rolle spielt sie im Layout, im Designsystem oder in der Interaktion?
Genau dort beginnt aus unserer Sicht die eigentliche Arbeit. Denn SVG ist nicht bloß eine Grafik, sondern oft ein gestalterischer und technischer Baustein digitaler Oberflächen.