Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

transform CSS property

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.

Die transform CSS-Eigenschaft ermöglicht es Ihnen, ein Element zu drehen, zu skalieren, zu verzerren oder zu verschieben. Sie modifiziert den Koordinatenraum des CSS visuellen Formatierungsmodells.

Wenn die Eigenschaft einen anderen Wert als none hat, wird ein Stacking-Kontext erstellt. In diesem Fall fungiert das Element als Enthaltender Block für alle position: fixed; oder position: absolute; Elemente, die es enthält.

Sie können auch die einzelnen Transformations-Eigenschaften verwenden: translate, rotate und scale. Diese Eigenschaften werden in der Reihenfolge angewendet: translate, rotate, scale und schließlich transform.

Warnung: Nur transformierbare Elemente können transformiert werden. Das heißt, alle Elemente, deren Layout durch das CSS-Boxmodell bestimmt wird, mit Ausnahme von: nicht ersetzte Inline-Boxen, Tabellenspalten-Boxen und Tabellenspalten-Gruppen-Boxen.

Probieren Sie es aus

transform: matrix(1, 2, 3, 4, 5, 6);
transform: translate(120px, 50%);
transform: scale(2, 0.5);
transform: rotate(0.5turn);
transform: skew(30deg, 20deg);
transform: scale(0.5) translate(-100%, -100%);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

Syntax

css
/* Keyword values */
transform: none;

/* Function values */
transform: matrix(1, 2, 3, 4, 5, 6);
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
transform: perspective(17px);
transform: rotate(0.5turn);
transform: rotate3d(1, 2, 3, 10deg);
transform: rotateX(10deg);
transform: rotateY(10deg);
transform: rotateZ(10deg);
transform: translate(12px, 50%);
transform: translate3d(12px, 50%, 3em);
transform: translateX(2em);
transform: translateY(3in);
transform: translateZ(2px);
transform: scale(2, 0.5);
transform: scale3d(2.5, 1.2, 0.3);
transform: scaleX(2);
transform: scaleY(0.5);
transform: scaleZ(0.3);
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);

/* Multiple function values */
transform: translateX(10px) rotate(10deg) translateY(5px);
transform: perspective(500px) translate3d(10px, 0, 20px) rotateY(30deg);

/* Global values */
transform: inherit;
transform: initial;
transform: revert;
transform: revert-layer;
transform: unset;

Werte

Diese Eigenschaft wird entweder als Schlüsselwort none oder als Leerzeichen-getrennte Liste von <transform-function>-Werten angegeben.

<transform-function>

Eine oder mehrere der CSS-Transformationsfunktionen, die angewendet werden sollen. Die Transformationsfunktionen werden von links nach rechts kombiniert – jede Funktion etabliert einen neuen Koordinatenraum für die nächste Funktion und so weiter –, sodass das visuelle Ergebnis der geschriebenen Reihenfolge der Funktionen entspricht. Alternativ, wenn der übergeordnete Koordinatenraum fixiert bleibt, kann dieselbe Transformation beschrieben werden, indem die Funktionen in umgekehrter Reihenfolge (von rechts nach links) angewendet werden.

none

Gibt an, dass keine Transformation angewendet werden soll.

Barrierefreiheit

Skalierungs-/Zoom-Animationen sind problematisch für die Barrierefreiheit, da sie ein häufiger Auslöser für bestimmte Arten von Migräne sind. Wenn Sie solche Animationen auf Ihrer Website einfügen müssen, sollten Sie eine Möglichkeit bieten, Benutzern das Deaktivieren von Animationen zu ermöglichen, vorzugsweise für die gesamte Website.

Erwägen Sie auch, die prefers-reduced-motion Media-Feature zu nutzen — verwenden Sie sie, um eine Media-Query zu schreiben, die Animationen deaktiviert, wenn der Benutzer in seinen Systemeinstellungen reduzierte Animation angegeben hat.

Erfahren Sie mehr:

Formale Definition

Anfangswertnone
Anwendbar auftransformierbare Elemente
VererbtNein
Prozentwertebezieht sich auf die Größe der äußeren Box
Berechneter Wertrelativ zur gleichen Achse der Innenabstandsbox des Scrollcontainers
AnimationstypTransformation
Erstellt StapelkontextJa

Formale Syntax

transform = 
none |
<transform-list>

<transform-list> =
<transform-function>+

<transform-function> =
<scale3d()> |
<scale()> |
<scaleX()> |
<scaleY()> |
<scaleZ()> |
<translate3d()> |
<translate()> |
<translateX()> |
<translateY()> |
<translateZ()> |
<rotate3d()> |
<rotate()> |
<rotateX()> |
<rotateY()> |
<rotateZ()> |
<skew()> |
<skewX()> |
<skewY()> |
<matrix3d()> |
<matrix()> |
<perspective()>

<scale3d()> =
scale3d( [ <number> | <percentage> ]#{3} )

<scale()> =
scale( <number> , <number>? )

<scaleX()> =
scaleX( <number> )

<scaleY()> =
scaleY( <number> )

<scaleZ()> =
scaleZ( [ <number> | <percentage> ] )

<translate3d()> =
translate3d( <length-percentage> , <length-percentage> , <length> )

<translate()> =
translate( <length-percentage> , <length-percentage>? )

<translateX()> =
translateX( <length-percentage> )

<translateY()> =
translateY( <length-percentage> )

<translateZ()> =
translateZ( <length> )

<rotate3d()> =
rotate3d( <number> , <number> , <number> , [ <angle> | <zero> ] )

<rotate()> =
rotate( [ <angle> | <zero> ] )

<rotateX()> =
rotateX( [ <angle> | <zero> ] )

<rotateY()> =
rotateY( [ <angle> | <zero> ] )

<rotateZ()> =
rotateZ( [ <angle> | <zero> ] )

<skew()> =
skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )

<skewX()> =
skewX( [ <angle> | <zero> ] )

<skewY()> =
skewY( [ <angle> | <zero> ] )

<matrix3d()> =
matrix3d( <number>#{16} )

<matrix()> =
matrix( <number>#{6} )

<perspective()> =
perspective( [ <length [0,∞]> | none ] )

<length-percentage> =
<length> |
<percentage>

Beispiele

Übersetzen und Drehen eines Elements

HTML

html
<div>Transformed element</div>

CSS

css
div {
  border: solid red;
  transform: translate(30px, 20px) rotate(20deg);
  width: 140px;
  height: 60px;
}

Ergebnis

Vergleich der Reihenfolge von Transformationsfunktionen

Die Reihenfolge der Transformationsfunktionen ist von Bedeutung.

In diesem Beispiel werden zwei Boxen mit denselben Werten gedreht und verschoben, aber die Funktionen sind in umgekehrter Reihenfolge. Die gestrichelten Linien markieren die X-Achse vor und nach der Drehung.

HTML

html
<div class="original"></div>
<div class="one">1</div>
<div class="two">2</div>

CSS

css
.one {
  transform: translateX(200px) rotate(135deg);
}
.two {
  transform: rotate(135deg) translateX(200px);
}

Ergebnis

  • Box 1 (zuerst translateX(), dann rotate()): Der Koordinatenraum verschiebt sich zuerst 200px entlang der X-Achse und dreht sich dann 135deg in diesem verschobenen Raum, sodass das Element sich rechts von seiner ursprünglichen Position befindet, gedreht.
  • Box 2 (zuerst rotate(), dann translateX()): Der Koordinatenraum dreht sich zuerst 135deg, sodass das Element sich dann 200px entlang der gedrehten Achse bewegt, in die Richtung, die durch die gestrichelten Linien angezeigt wird. Bitte siehe Verwendung von CSS-Transformationen und <transform-function> für weitere Beispiele.

Spezifikationen

Spezifikation
CSS Transforms Module Level 2
# transform-functions
CSS Transforms Module Level 1
# transform-property
Scalable Vector Graphics (SVG) 2
# TransformProperty

Browser-Kompatibilität

Siehe auch