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.

Mit der CSS-Eigenschaft transform können Sie ein Element drehen, skalieren, scheren oder verschieben. Sie verändert den Koordinatenraum des visuellen Formatierungsmodells von CSS.

Wenn die Eigenschaft einen anderen Wert als none hat, wird ein Stapelkontext erstellt. In diesem Fall dient das Element als umgebender Block für alle darin enthaltenen Elemente mit position: fixed; oder position: absolute;.

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

Warnung: Nur transformierbare Elemente können mit transform transformiert werden. Dazu gehören alle Elemente, deren Layout dem CSS-Boxmodell unterliegt, mit Ausnahme von nicht ersetzten 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 value */
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 durch den Schlüsselwortwert none oder durch eine durch Leerzeichen getrennte Liste von <transform-function>-Werten angegeben:

<transform-function>

Eine oder mehrere anzuwendende CSS-Transformationsfunktionen. Die Transformationsfunktionen werden von links nach rechts kombiniert: Jede Funktion legt einen neuen Koordinatenraum für die nächste Funktion fest. Dadurch entspricht das visuelle Ergebnis der Reihenfolge, in der die Funktionen geschrieben sind. Alternativ lässt sich dieselbe Transformation bei unverändertem Koordinatenraum des Elternelements als Anwendung der Funktionen in umgekehrter Reihenfolge (von rechts nach links) beschreiben.

none

Gibt an, dass keine Transformation angewendet werden soll.

Barrierefreiheit

Animationen mit Skalierung oder Zoom können die Barrierefreiheit beeinträchtigen, da sie bestimmte Arten von Migräne auslösen können. Wenn Sie solche Animationen auf Ihrer Website verwenden, sollten Sie eine Möglichkeit anbieten, Animationen zu deaktivieren – vorzugsweise für die gesamte Website.

Erwägen Sie außerdem, das Media-Feature prefers-reduced-motion zu verwenden. Damit können Sie eine Medienabfrage erstellen, die Animationen deaktiviert, wenn die Person in ihren Systemeinstellungen reduzierte Animationen festgelegt hat.

Weitere Informationen:

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

Ein Element verschieben und drehen

HTML

html
<div>Transformed element</div>

CSS

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

Ergebnis

Reihenfolge der Transformationsfunktionen vergleichen

Die Reihenfolge der Transformationsfunktionen ist wichtig.

In diesem Beispiel werden zwei Boxen um dieselben Werte gedreht und verschoben, die Funktionen stehen jedoch in umgekehrter Reihenfolge. Die gepunkteten 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 zunächst um 200px entlang der X-Achse und dreht sich anschließend in diesem verschobenen Raum um 135deg. Das Element befindet sich dadurch gedreht rechts von seiner ursprünglichen Position.
  • Box 2 (zuerst rotate(), dann translateX()): Der Koordinatenraum dreht sich zunächst um 135deg. Anschließend bewegt sich das Element um 200px entlang der gedrehten Achse in die durch die gepunkteten Linien angezeigte Richtung. Weitere Beispiele finden Sie unter CSS-Transformationen verwenden und <transform-function>.

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