Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
SVG-Transformationen ändern, wie grafische Elemente angezeigt werden, ohne die Elementgeometrie selbst umzuschreiben. Verwenden Sie das transform-Attribut, um SVG-Formen mit Funktionen wie translate(), scale(), rotate(), skewX() und skewY() zu verschieben, zu skalieren, zu drehen oder zu neigen. Die Matrixform derselben Idee finden Sie unter
Transformationsmatrix.
In diesem Artikel lernen Sie:
translate() zu verschieben.scale() zu skalieren.skewX() und skewY() zu neigen.transform-Attribut diesem Element oder einer übergeordneten <g>-Gruppe hinzu.translate(tx, ty), um das Element zu verschieben.scale(sx, sy), rotate(angle cx cy), skewX(angle) oder skewY(angle), um die sichtbare Geometrie zu verändern.matrix(a,b,c,d,e,f) nur, wenn eine einzelne Matrix klarer ist als getrennte transform functions.translate()Translation verschiebt jeden Punkt eines Elements um dieselbe Entfernung. Die Funktion translate(tx, ty) verschiebt ein Element um tx entlang der x-Achse und um ty entlang der y-Achse. Wenn ty fehlt, ist der Standardwert 0.
| Parameter | Beschreibung |
|---|---|
tx | Horizontaler Versatz, positiv nach rechts und negativ nach links |
ty | Vertikaler Versatz, positiv nach unten und negativ nach oben |
Die Wirkung von transform="translate(tx, ty)" entspricht der Änderung der Objektkoordinaten nach diesen Formeln:
x(new) = x(old) + tx
y(new) = y(old) + ty
Ein einfaches Beispiel:
1<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
2 <g fill="none">
3 <!-- no translation -->
4 <circle cx="15" cy="15" r="10" stroke="blue" />
5 <!-- horizontal translation -->
6 <circle cx="15" cy="15" r="10" stroke="black" transform="translate(22)" />
7 <circle cx="15" cy="15" r="10" stroke="red" transform="translate(44)" />
8 <!-- both horizontal and vertical translation -->
9 <circle cx="15" cy="15" r="10" stroke="green" transform="translate(33,13)" />
10 <circle cx="15" cy="15" r="10" stroke="yellow" transform="translate(11,13)" />
11 </g>
12</svg>Im Codebeispiel gruppiert das <g>-Element die Kreise, und fill="none" gilt für jeden Kreis innerhalb der Gruppe. Das Bild unten zeigt den ursprünglichen Kreis und die verschobenen Kopien (
translation.svg):

scale()Scaling vergrößert oder verkleinert ein Element mit einem Skalierungsfaktor. Die Funktion scale(sx, sy) multipliziert die Breite des Elements mit sx und die Höhe mit sy. Wenn sy fehlt, verwendet SVG denselben Wert wie sx, sodass das Element gleichmäßig skaliert.
| Parameter | Beschreibung |
|---|---|
sx | Horizontaler Skalierungsfaktor |
sy | Vertikaler Skalierungsfaktor, optional |
1<svg viewBox="-50 -50 200 200" xmlns="http://www.w3.org/2000/svg">
2 <!-- uniform scale -->
3 <circle cx="0" cy="0" r="10" fill="#B0C4DE" transform="scale(4)" />
4 <circle cx="0" cy="0" r="10" fill="#DDA0DD" transform="scale(3)" />
5 <circle cx="0" cy="0" r="10" fill="#FFB6C1" transform="scale(2)" />
6 <!-- no scale -->
7 <circle cx="0" cy="0" r="10" fill="#5F9EA0" />
8 <g transform="translate(100)">
9 <!-- uniform scale -->
10 <circle cx="0" cy="0" r="10" fill="#B0C4DE" transform="scale(4)" />
11 <!-- vertical scale -->
12 <circle cx="0" cy="0" r="10" fill="#DDA0DD" transform="scale(1,4)" />
13 <!-- horizontal scale -->
14 <circle cx="0" cy="0" r="10" fill="#FFB6C1" transform="scale(4,1)" />
15 <!-- no scale -->
16 <circle cx="0" cy="0" r="10" fill="#5F9EA0" />
17 </g>
18</svg>Das resultierende Bild ( scaling.svg):

Der Code oben verwendet scale() und translate(). Die erste Gruppe zeigt gleichmäßige Skalierung, bei der beide Achsen denselben Faktor verwenden. Die zweite Gruppe zeigt gerichtete Skalierung: scale(1,4) streckt den Kreis vertikal, während scale(4,1) ihn horizontal streckt.
rotate()Die Funktion rotate(angle, cx, cy) dreht ein Element um angle Grad um den Punkt (cx, cy). Wenn cx und cy fehlen, rotiert SVG das Element um (0, 0) im aktuellen Koordinatensystem.
| Parameter | Beschreibung |
|---|---|
angle | Rotationswinkel in Grad, positiv im Uhrzeigersinn |
cx | X-Koordinate des Rotationszentrums, optional |
cy | Y-Koordinate des Rotationszentrums, optional |
Alle Werte für rotate- oder skew-Winkel müssen in Grad angegeben werden. Andere CSS-Winkeleinheiten können hier nicht verwendet werden. Ein positiver Winkel dreht im Uhrzeigersinn, ein negativer Winkel gegen den Uhrzeigersinn.
Hinweis: rotate(angle cx) ist ungültig. Wenn Sie ein Rotationszentrum angeben, müssen sowohl cx als auch cy angegeben werden.
Wie translation verzerrt rotation das Element nicht. Abstände, Winkel und parallele Linien bleiben erhalten.
1<svg width="450" height="450" xmlns="http://www.w3.org/2000/svg">
2 <rect x="100" y="250" width="200" height="30" fill="CadetBlue" />
3 <rect x="100" y="250" width="200" height="30" fill="#DDA0DD" transform ="rotate(-45 200 265)" />
4 <rect x="100" y="250" width="200" height="30" fill="Pink" transform ="rotate(-90 200 265)" />
5 <rect x="100" y="250" width="200" height="30" fill="#B0C4DE" transform ="rotate(45 200 265)" />
6 <rect x="100" y="250" width="200" height="30" fill="CadetBlue" transform ="rotate(-35)" />
7</svg>Die Funktion transform="rotate(-90 200 265)" dreht das rosa Rechteck 90 Grad gegen den Uhrzeigersinn um (200, 265). Das letzte Rechteck verwendet rotate(-35) ohne Mittelpunkt, deshalb rotiert SVG es um (0, 0). Das Ergebnis ist unten zu sehen:

Die Beispieldatei rotation.svg enthält das SVG-Rotationsbeispiel.
skewX() und skewY()Skewing neigt ein Element, indem eine Koordinatenachse verändert wird. Verwenden Sie skewX(angle) für eine Neigung entlang der x-Achse und skewY(angle) für eine Neigung entlang der y-Achse. Der Winkel wird in Grad angegeben. Bei skewX(angle) ändern sich x-Koordinaten, während y-Koordinaten gleich bleiben. Bei skewY(angle) ändern sich y-Koordinaten, während x-Koordinaten gleich bleiben.
Hier ist ein Beispiel für einen Kreis mit skewX(55) (
skew-x.svg):
1<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
2 <circle cx="20" cy="20" r="15" stroke="blue" fill="none" />
3 <circle cx="20" cy="20" r="15" stroke="grey" stroke-opacity="0.7" fill="none" transform="skewX(55)" />
4</svg>Ein einfaches Beispiel für ein Rechteck, das mit skewY(35) geneigt wird (
skew-y.svg):
1<svg width="800" height="800" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
2 <rect x="20" y="20" width="30" height="30" stroke="blue" stroke-opacity="1" fill="none" />
3 <rect x="20" y="20" width="30" height="30" stroke="grey" stroke-opacity="0.5" fill="none" transform="skewY(35)" />
4 </svg>Die gerenderten Beispiele sehen so aus:

| Problem | Ursache | Lösung |
|---|---|---|
Rechteck bewegt sich nach translate nicht | transform-Attribut ist falsch geschrieben oder Anführungszeichen fehlen | Stellen Sie sicher, dass transform="translate(150,50)" korrekt auf dem Element gesetzt ist |
| Translation wird nicht angewendet | transform-Attribut steht auf einem Parent statt auf dem Zielelement | Setzen Sie transform direkt auf das Element, das verschoben werden soll, zum Beispiel <rect> |
| Unerwartete Rotationsrichtung | Vorzeichen des Winkels wird anders interpretiert als erwartet | Verwenden Sie positive Werte für Drehung im Uhrzeigersinn und negative für Drehung gegen den Uhrzeigersinn |
| Rotation erfolgt um den falschen Punkt | cx/cy fehlen oder sind auf den Ursprung des Elements gesetzt | Geben Sie explizite Koordinaten für das Rotationszentrum an oder verschieben Sie den pivot mit einer Vor-Translation |
| Skew wirkt zu extrem | Winkel wurde in Radiant statt Grad angegeben | Geben Sie Winkel in Grad an, zum Beispiel skewX(30) |
| Element verschwindet nach scaling | Skalierungsfaktor ist 0 oder unbeabsichtigt negativ | Verwenden Sie positive, von null verschiedene scale-Werte und prüfen Sie die Reihenfolge kombinierter transforms |
| Kombinierte transforms erzeugen falsches Ergebnis | Reihenfolge der Funktionen ist vertauscht | Denken Sie daran, dass transforms von rechts nach links angewendet werden; translate(...) rotate(...) rotiert zuerst und verschiebt danach |
| Effekt | SVG-Code zum Kopieren |
|---|---|
| 50 px nach rechts, 30 px nach unten verschieben | <rect x="10" y="10" width="40" height="20" transform="translate(50,30)" /> |
| Größe verdoppeln, gleichmäßig | <circle cx="20" cy="20" r="10" transform="scale(2)" /> |
| Horizontal 3× strecken | <rect x="0" y="0" width="20" height="20" transform="scale(3,1)" /> |
45° um Zentrum (100,100) drehen | <polygon points="90,90 110,90 100,110" transform="rotate(45 100 100)" /> |
| 90° im Uhrzeigersinn um Ursprung drehen | <line x1="0" y1="0" x2="50" y2="0" stroke="black" transform="rotate(90)" /> |
| X um 30° neigen | <rect x="10" y="10" width="30" height="30" transform="skewX(30)" /> |
| Y um -20° neigen | <circle cx="25" cy="25" r="15" transform="skewY(-20)" /> |
| Verkettung: verschieben und drehen | <g transform="translate(100,50) rotate(30)"><rect width="40" height="10" fill="red"/></g> |
Das transform-Attribut wendet eine geometrische Transformation auf ein SVG-Element oder eine Gruppe an. Es verändert die Anzeige des Elements, schreibt aber Attribute wie x, y, cx, cy oder path data nicht um.
translate(tx, ty) verschiebt ein Element, ohne seine Größe zu ändern. scale(sx, sy) verändert die Elementgröße und kann auch die sichtbare Position verschieben, weil scaling relativ zum Ursprung des Koordinatensystems erfolgt.
Verwenden Sie rotate(angle cx cy) und geben Sie beide Mittelpunktkoordinaten an. Zum Beispiel dreht transform="rotate(45 100 100)" das Element 45 Grad um den Punkt (100, 100).
Verwenden Sie einzelne Funktionen wie translate(), scale() und rotate(), wenn Lesbarkeit wichtig ist. Verwenden Sie matrix(a,b,c,d,e,f), wenn Sie eine kombinierte Transformation oder berechnete Werte aus einem Tool oder einer API benötigen.
transform-property und transform functions.transform-Attribute auf SVG-Elemente und Gruppen anwenden.Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.