about-svg.de

Die Grundformen von SVG

Teil 1: Grundlagen · Kapitel 2 von 12 · Aktualisiert am · 4 Minuten Lesezeit

Sechs vordefinierte Formen decken die meisten einfachen Zeichnungen ab. Jede hat eigene Attribute für Lage und Größe, Farbe und Umriss funktionieren bei allen gleich.

Rechteck: rect

Ein Rechteck braucht vier Angaben: x und y für die linke obere Ecke, dazu width und height. Mit rx und ry rundest du die Ecken ab. Gibst du nur rx an, übernimmt der Browser den Wert auch für ry, die Ecken werden also kreisrund.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 330 110" width="330" height="110">
  <rect x="10" y="20" width="90" height="70" fill="#1f5fd1"/>
  <rect x="120" y="20" width="90" height="70" rx="12" fill="#3b7be8"/>
  <rect x="230" y="20" width="90" height="70" rx="40" ry="20" fill="#7fa6ef"/>
</svg>
Drei Rechtecke: ohne Rundung, mit rx="12" und mit rx="40" ry="20".

Kreis und Ellipse

Der Kreis wird über seinen Mittelpunkt beschrieben, nicht über eine Ecke: cx und cy für das Zentrum, r für den Radius. Die Ellipse hat statt eines Radius zwei, rx für die waagerechte und ry für die senkrechte Halbachse. Eine Ellipse mit gleichen Werten ist ein Kreis.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 330 110" width="330" height="110">
  <circle cx="70" cy="55" r="40" fill="#1f5fd1"/>
  <ellipse cx="230" cy="55" rx="70" ry="35" fill="#3b7be8"/>
  <rect x="67" y="52" width="6" height="6" fill="#c2410c"/>
  <rect x="227" y="52" width="6" height="6" fill="#c2410c"/>
</svg>
Kreis mit r="40" und Ellipse mit rx="70" ry="35". Das orange Quadrat markiert jeweils den Mittelpunkt.

Linie

Eine Linie verbindet zwei Punkte: x1, y1 für den Anfang, x2, y2 für das Ende. Wichtig: Eine Linie hat keine Fläche. Ohne stroke bleibt sie unsichtbar, weil die Voreinstellung für den Umriss „keiner“ ist. Das ist der häufigste Grund, warum eine frisch geschriebene Linie nicht erscheint.

Wie die Enden aussehen, legt stroke-linecap fest: butt (gerade abgeschnitten, Standard), round (abgerundet) oder square (um die halbe Strichbreite verlängert).

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 330 120" width="330" height="120">
  <line x1="40" y1="25" x2="290" y2="25" stroke="#1f5fd1" stroke-width="14" stroke-linecap="butt"/>
  <line x1="40" y1="60" x2="290" y2="60" stroke="#1f5fd1" stroke-width="14" stroke-linecap="round"/>
  <line x1="40" y1="95" x2="290" y2="95" stroke="#1f5fd1" stroke-width="14" stroke-linecap="square"/>
  <path d="M40 8 V112 M290 8 V112" stroke="#c2410c" stroke-width="1"/>
</svg>
Drei Linien mit stroke-width="14" und den Enden butt, round und square. Die dünne Hilfslinie zeigt, wo die Linien rechnerisch beginnen und enden.

Polylinie und Polygon

Für Formen aus mehreren geraden Stücken gibt es zwei Elemente, die sich nur in einem Punkt unterscheiden. Beide erwarten im Attribut points eine Liste von Koordinatenpaaren. Die polyline bleibt offen, das polygon verbindet den letzten Punkt automatisch wieder mit dem ersten.

Die Paare dürfen durch Leerzeichen oder Kommas getrennt sein. Üblich und gut lesbar ist x,y x,y x,y.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 340 130" width="340" height="130">
  <polyline points="20,110 50,20 90,80 130,30 150,110" fill="none" stroke="#1f5fd1" stroke-width="4" stroke-linejoin="round"/>
  <polygon points="190,110 220,20 260,80 300,30 320,110" fill="#cfdcf7" stroke="#1f5fd1" stroke-width="4" stroke-linejoin="round"/>
</svg>
Links eine offene Polylinie, rechts ein Polygon mit denselben fünf Punkten, um 170 Einheiten verschoben.

Wo sich zwei Strichstücke treffen, bestimmt stroke-linejoin die Form der Ecke: miter (spitz, Standard), round oder bevel (abgeschrägt). Bei sehr spitzen Winkeln würde eine Miter-Ecke weit hinausragen. Deshalb schaltet der Browser ab einem bestimmten Verhältnis, festgelegt durch stroke-miterlimit, automatisch auf die abgeschrägte Form um.

Füllung und Umriss im Überblick

AttributWirkungStandard
fillFarbe der Fläche, none für keineschwarz
strokeFarbe des Umrisseskeiner
stroke-widthStrichbreite, mittig auf der Kontur1
stroke-dasharraygestrichelte Linie, z. B. 8 4durchgehend
opacity, fill-opacityDeckkraft von 0 bis 11

Ein Detail, das bei genauen Zeichnungen wichtig wird: Der Strich liegt je zur Hälfte innerhalb und außerhalb der Kontur. Ein 100 Einheiten breites Rechteck mit stroke-width="10" ist sichtbar also 110 Einheiten breit. Deshalb sitzt der Rahmen im ersten Beispiel dieses Tutorials bei x="1" und nicht bei 0, sonst würde die Hälfte des Strichs abgeschnitten.

Attribut oder CSS?

Alle Angaben zu Füllung und Umriss sind sogenannte Präsentationsattribute. Du kannst sie genauso gut per CSS setzen, etwa circle { fill: teal; }. CSS-Regeln haben dabei Vorrang vor den Attributen. Für einzelne Grafiken sind Attribute übersichtlich, für viele gleich gestaltete Elemente ist CSS praktischer.

Alles, was sich nicht aus diesen sechs Formen zusammensetzen lässt, also Kurven und frei geformte Umrisse, beschreibt das Pfad-Element. Es ist das mächtigste Element von SVG, und intern sind alle Grundformen nichts anderes als Kurzschreibweisen für bestimmte Pfade. Für Farbverläufe statt einfarbiger Flächen geht es im Kapitel Farben, Verläufe und Muster weiter.

Zum Weiterlesen