So passen sie zusammen: Transformieren, Übersetzen, Rotieren, Skalieren und Verschieben

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Firefox 72 war der erste mit „unabhängigen Transformationen“. Das heißt, anstatt Transformationen kombinieren zu müssen, wie z. B.

.el {
  transform: translate(10px, 10px) scale(0.95) rotate(10deg);
}

…können wir machen

.el {
  rotate: 10deg;
  scale: 0.95;
  translate: 10px 10px;
}

Das ist äußerst nützlich, da das ständige *Wiederholen* anderer Transformationen, wenn man nur eine einzige ändert, um sie nicht zu entfernen, mühsam und fehleranfällig ist.

Aber es gibt hier einige Nuancen zu beachten, und Dan Wilson geht ins Detail.

Kleine Dinge, die man wissen sollte

  • Unabhängige Transformationen geschehen *zuerst*. Die transform-Eigenschaft kommt zuletzt und stapelt sich auf das, was bereits geschehen ist, was verwirrend sein kann¹.
  • Sie alle teilen sich denselben transform-origin.
  • Die offset-*-Eigenschaften verschieben/rotieren Elemente ebenfalls effektiv. Diese geschehen *nach* den unabhängigen Transformationen und *vor* transform.
  1. Claus Colloseus schrieb, um einige Probleme in diesem Beitrag zu beheben und zu verdeutlichen, wie verwirrend das sein kann. Zum Beispiel bewirkt rotate: 45deg; transform: rotate(-45deg); nichts, da beide angewendet werden und sich gegenseitig aufheben. Sollte dann nicht auch translate: 50px 0; rotate: 45deg; transform: translate(-50px, 0) rotate(-45deg); sich alles aufheben? Nein, wegen der Reihenfolge ist das Endergebnis wie translate(14,6447px, -35,3553px).