PFAD: ./module/css/css4/

DATEI: string(25) "00Inhaltsverzeichnis4.php"
DATEI: string(21) "22CSS-Animationen.php"
DATEI: string(26) "23AnimationenUndPraxis.php"
DATEI: string(26) "24AnimationenUndKarten.php"
DATEI: string(26) "26 2D-Transformationen.php"
DATEI: string(19) "27rotateUndskew.php"
DATEI: string(30) "28Mehrere Transformationen.php"
DATEI: string(26) "29 3D-Transformationen.php"
DATEI: string(14) "30 3D-Raum.php"
DATEI: string(22) "31 3D-AchseUndRaum.php"
DATEI: string(22) "32EinUndAusblenden.php"
DATEI: string(28) "33WürfelUndBildergalerie.php"
DATEI: string(15) "34 3D-Karte.php"

css mit Adi Prinz

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

−120px
.translate-z-negative {
  transform: translateZ(-120px);
}
        

Ausgangsposition

0
.translate-z-zero {
  transform: translateZ(0);
}
        

Zum Betrachter

+120px
.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

x, y und z
.translate3d-positive {
  transform: translate3d(35px, 25px, 80px);
}
        

Nach links, oben und hinten

−x, −y und −z
.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

translateZ(120px)

Mit Perspektive

translateZ(120px)
.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

rotateX(55deg)
.rotate-x-example {
  transform: rotateX(55deg);
}
        

Drehung um die y-Achse

rotateY(55deg)
.rotate-y-example {
  transform: rotateY(55deg);
}
        

Drehung um die z-Achse

rotateZ(55deg)
.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

+45deg
.rotate-y-positive {
  transform: rotateY(45deg);
}
        

Negativer Winkel

−45deg
.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

Mittelpunkt
.rotate-center-origin {
  transform-origin: center center;
  transform: rotateY(55deg);
}
        

Drehung um die linke Kante

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.

X- und Y-Drehung
.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.