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

Mehrere Transformationen kombinieren

Mehrere Funktionen in einer Deklaration

Mehrere Transformationsfunktionen können innerhalb einer transform-Eigenschaft hintereinander angegeben werden. Die einzelnen Funktionen werden durch Leerzeichen getrennt.

.element {
  transform: translateX(40px) rotate(15deg) scale(1.1);
}
    

In diesem Beispiel wird das Element verschoben, gedreht und vergrößert.

Mehrere Transformationen dürfen nicht mit Kommas getrennt werden. Zwischen den Funktionen stehen nur Leerzeichen.

Die Reihenfolge ist wichtig

Transformationsfunktionen werden nicht unabhängig voneinander ausgeführt. Jede Funktion beeinflusst das Koordinatensystem für die folgenden Transformationen. Deshalb können dieselben Funktionen in unterschiedlicher Reihenfolge zu verschiedenen Ergebnissen führen.

Zuerst verschieben, dann drehen

Verschieben
und drehen
.combine-first {
  transform: translateX(50px) rotate(25deg);
}
        

Zuerst drehen, dann verschieben

Drehen
und verschieben
.combine-second {
  transform: rotate(25deg) translateX(50px);
}
        
Im zweiten Beispiel wurde das Koordinatensystem bereits gedreht. Die anschließende Verschiebung mit translateX() folgt deshalb der gedrehten x-Achse.

Die transform-Eigenschaft wird vollständig ersetzt

Wird transform in einer späteren CSS-Regel erneut angegeben, ersetzt die neue Deklaration normalerweise den vorherigen Wert.

.element {
  transform: translateX(40px);
}

.element:hover {
  transform: scale(1.2);
}
    

Beim Überfahren mit der Maus wird die Verschiebung nicht beibehalten. Es gilt nur noch scale(1.2).

Sollen beide Transformationen gelten, müssen beide Funktionen erneut angegeben werden:

.element:hover {
  transform: translateX(40px) scale(1.2);
}
    
Dieses Verhalten ist später besonders bei Transitionen, Animationen und Hover-Effekten wichtig.

Moderne einzelne Transformationseigenschaften

Für Verschiebung, Drehung und Skalierung stehen zusätzlich die einzelnen CSS-Eigenschaften translate, rotate und scale zur Verfügung.

.element {
  translate: 40px 20px;
  rotate: 15deg;
  scale: 1.1;
}
    

Diese Schreibweise kann praktisch sein, wenn einzelne Transformationen unabhängig voneinander verändert werden sollen.

Transformationsfunktion Einzelne Eigenschaft
transform: translate(40px, 20px); translate: 40px 20px;
transform: rotate(15deg); rotate: 15deg;
transform: scale(1.1); scale: 1.1;
Die einzelnen Eigenschaften ersetzen transform nicht vollständig. Funktionen wie skew() werden weiterhin über transform angegeben.

Den Transformationsursprung festlegen

Der Ausgangspunkt einer Transformation

Mit der Eigenschaft transform-origin wird festgelegt, von welchem Punkt aus eine Transformation erfolgt. Das ist besonders bei Drehungen und Skalierungen deutlich sichtbar.

Standardmäßig liegt der Transformationsursprung in der Mitte des Elements:

.element {
  transform-origin: center center;
}
    

Das entspricht:

.element {
  transform-origin: 50% 50%;
}
    
transform-origin führt selbst keine Transformation aus. Die Eigenschaft legt lediglich den Ausgangspunkt für eine Transformation fest.

Schreibweise und Werte

transform-origin: x-position y-position;
    

Der erste Wert bestimmt die Position entlang der x-Achse, der zweite Wert die Position entlang der y-Achse.

Wert Bedeutung
center Mitte der jeweiligen Achse
left Linker Rand entlang der x-Achse
right Rechter Rand entlang der x-Achse
top Oberer Rand entlang der y-Achse
bottom Unterer Rand entlang der y-Achse
50% 50% Mittelpunkt des Elements
0 0 Linke obere Ecke
100% 100% Rechte untere Ecke
20px 30px 20 Pixel vom linken und 30 Pixel vom oberen Rand des Elements

Typische Schlüsselwortkombinationen sind:

transform-origin: center;
transform-origin: left top;
transform-origin: right bottom;
transform-origin: center bottom;
    
Wird nur ein Wert angegeben, wird der fehlende zweite Wert normalerweise als center behandelt. Für gut lesbaren Lerncode sind zwei eindeutige Werte jedoch oft verständlicher.

Drehung um unterschiedliche Ausgangspunkte

In den folgenden Beispielen werden gleich große Boxen jeweils um 25deg gedreht. Nur der Transformationsursprung unterscheidet sich.

Drehung um den Mittelpunkt

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

Drehung um die linke obere Ecke

Links oben
.origin-top-left {
  transform-origin: left top;
  transform: rotate(25deg);
}
        

Drehung um die rechte untere Ecke

Rechts unten
.origin-bottom-right {
  transform-origin: right bottom;
  transform: rotate(25deg);
}
        

Drehpunkt außerhalb des Elements

Außerhalb
.origin-outside {
  transform-origin: -30px 50%;
  transform: rotate(25deg);
}
        
Der Transformationsursprung kann auch außerhalb des Elements liegen. Dadurch bewegt sich das Element bei einer Drehung auf einer größeren Kreisbahn.

Praktische Einsatzmöglichkeiten

Durch einen passend gewählten Transformationsursprung lassen sich unterschiedliche Bewegungen und Effekte vorbereiten.

  • Eine Tür dreht sich um ihre linke oder rechte Kante.
  • Ein Zeiger dreht sich um sein unteres Ende.
  • Ein Menü klappt von seiner oberen Kante aus auf.
  • Eine Karte vergrößert sich aus einer bestimmten Ecke.
.tuer {
  transform-origin: left center;
  transform: rotate(-20deg);
}

.zeiger {
  transform-origin: center bottom;
  transform: rotate(45deg);
}
    

matrix() und Zusammenfassung

Mehrere Transformationen mit matrix() beschreiben

Die Funktion matrix() beschreibt mehrere 2D-Transformationen mithilfe von sechs Zahlenwerten. Sie kann unter anderem Skalierungen, Neigungen und Verschiebungen zusammenfassen.

transform: matrix(a, b, c, d, e, f);
    
Wert Bedeutung
a Beeinflusst hauptsächlich die Skalierung entlang der x-Achse.
b Beeinflusst die Neigung beziehungsweise Drehung.
c Beeinflusst die Neigung beziehungsweise Drehung.
d Beeinflusst hauptsächlich die Skalierung entlang der y-Achse.
e Verschiebung entlang der x-Achse.
f Verschiebung entlang der y-Achse.
Die ersten vier Werte wirken gemeinsam auf Skalierung, Drehung und Neigung. Sie sollten daher nicht völlig unabhängig voneinander betrachtet werden.

Einfache matrix()-Beispiele

Die unveränderte Ausgangsdarstellung wird mit folgender Matrix beschrieben:

.element {
  transform: matrix(1, 0, 0, 1, 0, 0);
}
    

Die nächsten beiden Schreibweisen verschieben ein Element um 40px nach rechts und um 20px nach unten:

.element {
  transform: translate(40px, 20px);
}
    
.element {
  transform: matrix(1, 0, 0, 1, 40, 20);
}
    

Auch eine einfache Skalierung kann als Matrix geschrieben werden:

.element {
  transform: scale(1.2, 0.8);
}
    
.element {
  transform: matrix(1.2, 0, 0, 0.8, 0, 0);
}
    
Für handgeschriebenen CSS-Code sind Funktionen wie translate(), rotate() und scale() wesentlich leichter lesbar. Eine Matrix begegnet dir häufig in Browser-Entwicklertools oder in automatisch erzeugtem Code.

Zusammenfassung der 2D-Transformationen

Eigenschaft oder Funktion Aufgabe Beispiel
translate() Verschiebt ein Element. translate(40px, 20px)
scale() Vergrößert oder verkleinert ein Element. scale(1.2)
rotate() Dreht ein Element. rotate(20deg)
skew() Neigt ein Element. skew(20deg, 10deg)
matrix() Beschreibt mehrere 2D-Transformationen als Matrix. matrix(1, 0, 0, 1, 40, 20)
transform-origin Legt den Ausgangspunkt einer Transformation fest. transform-origin: left top;
translate, rotate, scale Ermöglichen die getrennte Angabe einzelner Transformationen. rotate: 20deg;

Wichtige Hinweise

  • Transformationen verändern normalerweise nicht den Platz eines Elements im Dokumentfluss.
  • Mehrere Transformationsfunktionen werden innerhalb von transform durch Leerzeichen getrennt.
  • Die Reihenfolge mehrerer Transformationsfunktionen beeinflusst das Ergebnis.
  • Eine neue transform-Deklaration ersetzt normalerweise den vorherigen Wert vollständig.
  • transform-origin bestimmt den Ausgangspunkt einer Drehung, Skalierung oder Neigung.
  • Große Skalierungen, Drehungen und Neigungen können andere Inhalte optisch überdecken.
  • Bewegte Transformationen sollten bei der Einstellung prefers-reduced-motion später reduziert oder deaktiviert werden.
Damit sind die Grundlagen der 2D-Transformationen abgeschlossen. Die Funktionen werden später zusammen mit Transitionen und Animationen verwendet, um sichtbare Bewegungen und Übergänge zu erzeugen.