Bitte warten...

SVG: Transformationen

► W3C-Empfehlung: Coordinate system transformations transform

Analog zu den 2D-Transformationen in CSS3 lassen sich auch in SVG die einzelnen Elemente der Grafik in der Ebene manipulieren. Diese Manipulationen können mit dem SVG-Attribut transform umgesetzt werden.

Versatz – translate

Mit Hilfe der Transformation translate kann ein Objekt entlang der Achsen des Koordinatensystems verschoben werden. Wird lediglich ein Wert angegeben, so wird das Objekt entlang der x-Achse verschoben. Werden zwei Werte angegeben, so gilt der erste Wert für den Versatz in x-Richtung und der zweite für den Versatz in y-Richtung.

Code kopieren
<svg width='350px' height='180px'>
  <rect x='80' y='40' width='190' height='100' rx='10' style='fill:red;opacity:1;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
  <rect x='80' y='40' width='190' height='100' transform='translate(50 20)' rx='10' style='fill:blue;opacity:.5;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
</svg>

Skalierung – scale

Mit Hilfe der Transformation scale kann ein Objekt skaliert (vergrößert oder verkleinert) werden, wobei sich der Bezugspunkt der Skalierung am Nullpunkt des Koordinatensystems befindet (links oben). Wird lediglich ein Wert angegeben, so gilt dieser sowohl für die Skalierung in x- als auch in y-Richtung. Werden zwei Werte angegeben, so gilt der erste für die Skalierung in x-Richtung und der zweite für die Skalierung in y-Richtung. Die ursprünglichen Dimensionen werden mit dem angegebenen Wert multipliziert. Eine Strecke mit einer ursprünglichen Länge von 100 Pixeln besitzt daher z. B. nach Anwendung von transform='scale(2.5)' eine Länge von 250 Pixeln.

Code kopieren
<svg width='350px' height='180px'>
  <rect x='80' y='40' width='190' height='100' rx='10' style='fill:red;opacity:1;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
  <rect x='80' y='40' width='190' height='100' transform='scale(1.2 .5)' rx='10' style='fill:blue;opacity:.5;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
</svg>

Neigung – skewX, skewY

Mit Hilfe der Transformation skewX kann ein Objekt in Richtung der x-Achse geneigt werden. Entsprechend kann ein Objekt mit der Transformation skewY in Richtung der y-Achse geneigt werden. Der angegebene Wert ist der Winkel der Neigung, wobei sich der Ansatzpunkt dieses Winkels bei skewX auf der x-Achse und bei skewY auf der y-Achse des Koordinatensystems befindet.

Code kopieren
<svg width='350px' height='180px'>
  <rect x='80' y='40' width='190' height='100' rx='10' style='fill:red;opacity:1;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
  <rect x='80' y='40' width='190' height='100' rx='10' transform='skewX(-20)' style='fill:blue;opacity:.5;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
  <rect x='80' y='40' width='190' height='100' rx='10' transform='skewX(-40)' style='fill:green;opacity:.5;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
</svg>

Drehung – rotate

Mit Hilfe der Transformation rotate kann ein Objekt gedreht werden. Mindestens der Winkel der Rotation muss als Wert angegeben werden. In diesem Fall ist der Drehpunkt der Nullpunkt des Koordinatensystems (links oben). Zusätzlich zum Winkel können die Koordinaten des Drehpunktes auf der x- und y-Achse angegeben werden.

Code kopieren
<svg width='350px' height='180px'>
  <rect x='80' y='40' width='190' height='100' rx='10' style='fill:red;opacity:1;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
  <rect x='80' y='40' width='190' height='100' rx='10' transform='rotate(20)' style='fill:blue;opacity:.5;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
</svg>

<svg width='350px' height='180px'>
  <rect x='80' y='40' width='190' height='100' rx='10' style='fill:red;opacity:1;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
  <rect x='80' y='40' width='190' height='100' rx='10' transform='rotate(20 175 90)' style='fill:blue;opacity:.5;stroke:yellow;stroke-width:4px;stroke-opacity:1;' />
</svg>