Wie ihr das volle Potential von Inline-SVG-Bildern entfaltet

SVG-Bilder sind ein integraler Bestandteil des modernen Webdesigns. SVG, kurz für Scalable Vector Graphics, sind hoch skalierbar und haben eine geringe Dateigröße. Ihr könnt sie sogar mit CSS stylen, wie ich euch zeigen werde.

Ein SVG-Bild kann mit dem <img>-Tag oder der CSS-Eigenschaft background-image in eine Website eingebettet werden. In diesem Fall könnt ihr aber das Styling des Bildes nicht ändern. Ich verwende lieber Inline-SVG-Bilder. Diese können mit CSS angepasst und sogar animiert werden.

Eine Frau malt eine Katzenfigur auf ein Stück Papier. Foto: © Andrea Piacquadio / pexels.com

Wie kann man Inline-SVG-Bilder einbetten? Was sind die besten Methoden, um sie mit CSS-Eigenschaften und Variablen anzupassen? Lest weiter, um die Antworten darauf zu erfahren.

Wie ihr ein Inline-SVG einbettet

SVG-Bilder können mit dem <svg>-Tag direkt in ein HTML-Dokument eingebettet werden. Öffnet einfach die Bilddatei in einem Code-Editor, kopiert den Code und fügt ihn in euer HTML-Template ein. Hier ist ein Beispiel:

<svg height="48" width="48" viewBox="0 -960 960 960" xmlns="http://www.w3.org/2000/svg"> <path d="m393-165 279-335H492l36-286-253 366h154l-36 255Zm-73 85 40-280H160l360-520h80l-40 320h240L400-80h-80Zm153-395Z"></path> </svg>

Websites werden oft mithilfe komponentenbasierter JavaScript-Frameworks wie Angular oder React erstellt. Damit könnt ihr ein Inline-SVG in einer eigenen Komponente verpacken, die ihr dann an verschiedenen Stellen eurer Website wiederverwenden könnt. Ein Beispiel dafür ist die Material UI Icon-Bibliothek.

Die UI-Bibliothek Angular Material geht sogar noch einen Schritt weiter: Damit könnt ihr SVG-Dateien als Assets der Website hinzufügen. Die Anwendung lädt die Bilder später vom Server, sodass der SVG-Code über die <mat-icon>-Komponente in das HTML-Dokument eingebettet werden kann.

Demo: Flexibles Styling von SVG-Icon-Buttons

Ich habe eine Demo mit Anwendungsfällen für Inline-SVGs erstellt. Ihr könnt die Farbe der Icons über ein Farbwahlelement anpassen:

Wie das funktioniert? Indem ihr den fill des SVG-Bildes mit der CSS-Eigenschaft color verknüpft.

SVG-Bilder mit CSS stylen

Als erstes setzt ihr die Eigenschaft fill des SVG-Bildes auf den Wert currentColor. Dieses spezielle Schlüsselwort steht für den Wert der color CSS-Eigenschaft eines Elements. Auf diese Weise werden die Vektoren des SVG-Bildes mit der Schriftfarbe des Elements gefüllt. Ihr könnt die Eigenschaft im SVG-Code setzen:

<svg fill="currentColor" height="48" width="48" viewBox="0 -960 960 960" xmlns="http://www.w3.org/2000/svg"> <path d="..."></path> </svg>

Oder ihr definiert die Eigenschaft im CSS-Code:

.icon svg { fill: currentColor; }

Jetzt könnt ihr das Aussehen des SVG-Bildes über die CSS-Eigenschaft color steuern. Das erleichtert die Verwaltung von Farbthemen und verschiedenen Zuständen von Steuerelementen.

Sagen wir, ihr verwendet eine Schaltfläche mit Icon und Text, wie in meiner Demo oben: Ihr könnt alle Elemente innerhalb der Schaltfläche mit einer einzigen CSS-Regel einfärben. Verschiedene Zustände wie :hover, :focus oder :disabled sind einfach zu gestalten. Ihr könnt sogar den Farbwechsel animieren:

.primary-btn { color: #f118a6; transition: color 0.5s ease; } .primary-btn:hover, .primary-btn:focus { color: #920c64; outline: 2px solid currentColor; }

CSS-Variablen für mehrfarbige Bilder verwenden

Ihr könnt sogar CSS-Variablen innerhalb von SVG-Code verwenden. Das kann nützlich sein, wenn euer SVG-Bild mehrere Farben enthält. In diesem Fall könnt ihr die Hauptfarbe weiterhin mit der CSS-Eigenschaft color verknüpfen. Für die anderen Farben solltet ihr eigene CSS-Variablen definieren:

<svg fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"> <path d="..." /> <path d="..." /> <path fill="var(--secondary-fill)" d="..." /> </svg>

Im Beispiel oben werden das erste und zweite path-Element durch die definierte Schriftfarbe eingefärbt. Die Füllung des dritten Pfades könnt ihr über die CSS-Variable --secondary-fill steuern:

.icon { color: darkred; --secondary-fill: white; }

Der Artikel „Multi-Colored SVG Symbol Icons with CSS Variables“ gibt euch einen ausführlichen Einblick in das Konzept.

Macht eure Bilder barrierefrei

Und nicht zuletzt: Vergesst nicht auf die Barrierefreiheit! Wenn das SVG-Bild rein dekorativ ist, dann verwendet aria-hidden="true", um das Element vor assistiven Technologien zu verbergen.

Wenn das Bild wichtige Informationen vermittelt, solltet ihr role="img" setzen und mit dem Attribut aria-label einen alternativen Text angeben. Lest den Artikel „Accessible SVGs“ für weitere Informationen und Anwendungsfälle.

Erstellt am