Neben der „klassischen Variante“ SVG als Bilder mit dem img
-Element in HTML-Dokumenten zu referenzieren, ist es seit XHTML möglich SVG-Code direkt im Dokument als Dateninsel zu verwenden:
<html
xmlns
="http://www.w3.org/1999/xhtml">
…
<body
>
…
<svg
xmlns
="http://www.w3.org/2000/svg">
</svg
>
…
</body
>
</html
>
Der Code für HTML 5 ist analog dazu und verzichtet auf die XML-Namensraum-Angaben, da SVG nun Teil von HTML 5 ist:
<html
>
…
<body
>
…
<svg
>
</svg
>
…
</body
>
</html
>
viewBox
Die Größe der Grafiken in der HTML-Datei kann mit den Attributen width
und height
oder den gleichnamigen CSS-Regeln spezifiziert werden. Bei Verwendung des viewBox
-Attributs wird die Grafik per Default auf die komplette Viewport-Breite skaliert.
Die vier Werte der viewBox
spezifizieren die „Zeichenfläche“ der SVG:
viewBox
="x y breite höhe"
Alle Angaben sind in viewBox-Einheiten und geben die minimalen sowie maximalen Werte der Koordinaten innerhalb der Grafik vor; Objekte, deren Koordinaten außerhalb der viewBox liegen, werden an der viewBox-Grenze abgeschnitten:
<svg
width
="20em" heigh
="20em" viewBox
="0 0 20 20">
<circle
cx
="15" cy
="10" r
="10" style
="stroke:black;fill:red"/>
</svg
>
Für SVG direkt in HTML gelten die gleichen CSS-Regeln sowie Eindeutigkeiten von Klassen und IDs wie für reines HTML, sie gelten global im ganzen HTML-Dokument.
Dies kann genutzt werden CSS-Regeln und Objekte, die in mehreren Grafiken verwendet werden, an zentraler Stelle im Dokument zu definieren und dann in jeder Grafik zu referenzieren.
Die CSS-Regeln für die Grafiken passen daher in das globale Stylesheet oder den globalen style
-Bereich.
Die SVG-Objekte können zum Beispiel in einem nicht-sichtbaren svg
am Ende des HTML-body
def
iniert werden:
<svg
style
="display:none">
<def
>
…
Marker, Symbole, Pfade, Objekte, … mit IDs
</def
>
</svg
>
</body
>
Skalierbare Vektorgrafiken, die in HTML-Dokumente eingebettet sind, können nicht wie bei referenzierten Grafiken einfach per Kontextmenü → Kopieren in die Zwischenablage kopiert und von dort in eine andere Anwendung eingefügt werden; der Zugriff ist nur über das HTML-DOM möglich. Man muss also manuell mit STRG+U oder die Browser-Entwicklertools (durch Drücken der Taste F12) an den Code heran. Eine Möglichkeit einen Bildexport anzubieten, habe ich im SELFHTML-Blog beschrieben. Die Idee dabei ist mit JavaScript auf den DOM-Teilbaum der Grafik zuzugreifen und daraus einen Download-Link zu generieren.
Beim dort beschriebenen Ansatz ist zu beachten, dass nur die Grafik exportiert wird, aber nicht zentral definierte Styles und Objekte – diese müssen vor dem Speichern zusätzlich in den DOM-Teilbaum der Grafik eingefügt werden.