Elemente im 3D-Raum verschieben
Verschiebung entlang der z-Achse
Mit translateZ() wird ein Element entlang der z-Achse verschoben.
Dadurch bewegt es sich optisch zum Betrachter oder vom Betrachter weg.
.element {
transform: translateZ(80px);
}
-
Ein positiver Wert bewegt das Element zum Betrachter.
-
Ein negativer Wert bewegt das Element vom Betrachter weg.
-
Der Wert
0 bewirkt keine Verschiebung entlang der z-Achse.
Die räumliche Wirkung von translateZ() wird normalerweise erst
durch eine Perspektive deutlich sichtbar.
Positive und negative z-Werte vergleichen
Alle folgenden Boxen befinden sich in einem Bereich mit derselben Perspektive.
Nur die Verschiebung entlang der z-Achse unterscheidet sich.
Vom Betrachter weg
.translate-z-negative {
transform: translateZ(-120px);
}
Ausgangsposition
.translate-z-zero {
transform: translateZ(0);
}
Zum Betrachter
.translate-z-positive {
transform: translateZ(120px);
}
Bei positiven z-Werten erscheint das Element größer, weil es sich dem
Betrachter nähert. Bei negativen Werten erscheint es kleiner.
Verschiebung entlang aller drei Achsen
Mit translate3d() können die Verschiebungen entlang der x-, y-
und z-Achse gemeinsam angegeben werden.
transform: translate3d(x, y, z);
| Parameter |
Aufgabe |
x |
Waagrechte Verschiebung nach links oder rechts. |
y |
Senkrechte Verschiebung nach oben oder unten. |
z |
Räumliche Verschiebung zum Betrachter oder vom Betrachter weg.
|
.element {
transform: translate3d(40px, 20px, 80px);
}
Das Element wird dabei:
40px nach rechts verschoben,
20px nach unten verschoben und
80px zum Betrachter bewegt.
Für den dritten Wert von translate3d() sind Längenangaben wie
px zulässig. Prozentwerte sind für die z-Komponente nicht
erlaubt.
translate3d() in der praktischen Darstellung
Nach rechts, unten und vorne
.translate3d-positive {
transform: translate3d(35px, 25px, 80px);
}
Nach links, oben und hinten
.translate3d-negative {
transform: translate3d(-35px, -25px, -80px);
}
Warum translateZ() ohne Perspektive kaum sichtbar ist
Eine reine Verschiebung entlang der z-Achse verändert zunächst weder die
waagrechte noch die senkrechte Position des Elements. Ohne Perspektive fehlt
daher der sichtbare Größen- und Tiefeneindruck.
.ohne-perspektive {
/* keine perspective-Eigenschaft */
}
.mit-perspektive {
perspective: 600px;
}
translateX() und translateY() sind auch ohne
Perspektive sichtbar. Für translateZ() ist eine Perspektive
dagegen entscheidend für den räumlichen Eindruck.
Der Platz im Dokumentfluss bleibt unverändert
Wie bei 2D-Transformationen verändert eine 3D-Verschiebung normalerweise nicht
den ursprünglichen Platz des Elements im Dokumentfluss. Andere Elemente werden
durch die optische Verschiebung nicht automatisch zur Seite geschoben.
Ein nach vorne verschobenes Element kann dadurch andere Inhalte optisch
überdecken. Bei größeren z-Werten sollte deshalb auf ausreichend Platz und
mögliche Überschneidungen geachtet werden.
Elemente um die drei Achsen drehen
Drehungen im dreidimensionalen Raum
Mit rotateX(), rotateY() und
rotateZ() wird ein Element um eine bestimmte Achse gedreht.
Der Drehwinkel wird meistens in Grad mit der Einheit deg
angegeben.
| Funktion |
Drehachse |
Anschaulicher Vergleich |
rotateX() |
Drehung um die waagrechte x-Achse |
Wie eine Klappe, die nach oben oder unten geöffnet wird |
rotateY() |
Drehung um die senkrechte y-Achse |
Wie eine Tür, die nach links oder rechts geöffnet wird |
rotateZ() |
Drehung um die z-Achse |
Wie eine normale Drehung auf der Bildschirmfläche |
.element-x {
transform: rotateX(45deg);
}
.element-y {
transform: rotateY(45deg);
}
.element-z {
transform: rotateZ(45deg);
}
Bei rotateX() und rotateY() wird die räumliche
Wirkung durch eine Perspektive deutlich sichtbar. rotateZ()
entspricht optisch weitgehend der bekannten 2D-Funktion
rotate().
Die drei Drehachsen vergleichen
Alle Boxen werden um 55deg gedreht. Nur die verwendete Achse
unterscheidet sich.
Drehung um die x-Achse
.rotate-x-example {
transform: rotateX(55deg);
}
Drehung um die y-Achse
.rotate-y-example {
transform: rotateY(55deg);
}
Drehung um die z-Achse
.rotate-z-example {
transform: rotateZ(55deg);
}
Positive und negative Drehwinkel
Das Vorzeichen des Winkels bestimmt die Drehrichtung. Die genaue räumliche
Wirkung hängt von der verwendeten Achse und vom Betrachtungspunkt ab.
Positiver Winkel
.rotate-y-positive {
transform: rotateY(45deg);
}
Negativer Winkel
.rotate-y-negative {
transform: rotateY(-45deg);
}
Die Drehrichtung lässt sich mit der Rechte-Hand-Regel beschreiben. Für den
praktischen Einsatz ist es meistens einfacher, positive und negative Werte
direkt im Browser zu vergleichen.
Die Drehachse mit transform-origin verschieben
Standardmäßig dreht sich ein Element um seinen Mittelpunkt. Mit
transform-origin kann der Drehpunkt beispielsweise an eine
Kante verschoben werden.
Drehung um den Mittelpunkt
.rotate-center-origin {
transform-origin: center center;
transform: rotateY(55deg);
}
Drehung um die linke Kante
.rotate-left-origin {
transform-origin: left center;
transform: rotateY(55deg);
}
Mit transform-origin: left center verhält sich eine
rotateY()-Drehung ähnlich wie eine Tür, die an ihrer linken
Kante befestigt ist.
Drehungen um mehrere Achsen kombinieren
Mehrere Drehfunktionen können innerhalb von transform
hintereinander angegeben werden.
.rotate-combined {
transform:
rotateX(30deg)
rotateY(45deg);
}
Auch bei 3D-Drehungen beeinflusst die Reihenfolge der Funktionen das
Ergebnis:
.element-a {
transform: rotateX(30deg) rotateY(45deg);
}
.element-b {
transform: rotateY(45deg) rotateX(30deg);
}
Die beiden Schreibweisen liefern normalerweise unterschiedliche Ergebnisse,
weil jede Drehung das Koordinatensystem für die nachfolgende Transformation
mitdreht.
Besondere Drehwinkel
| Winkel |
Wirkung |
0deg |
Keine Drehung |
90deg |
Das Element steht bei einer x- oder y-Drehung seitlich zur
Betrachtungsfläche und kann nahezu unsichtbar erscheinen.
|
180deg |
Die Rückseite des Elements zeigt zum Betrachter. |
360deg |
Eine vollständige Drehung zurück zur Ausgangsrichtung |
Ob die Rückseite bei 180deg sichtbar bleibt, wird später mit
backface-visibility festgelegt.