Zum Inhalt springen

So kombinieren Sie translate, rotate, skew und scale

Neun Regler steuern eine zweidimensionale Transformation: translateX und translateY in px (-240 bis 240), scaleX und scaleY (-3 bis 3), rotate (-360 bis 360 Grad), skewX und skewY (-89 bis 89 Grad) sowie die transform-origin-Prozente X und Y (0 bis 100). Jeder Tastendruck zeichnet die Karte auf der Bühne neu, und im Codefeld steht genau die Zeichenfolge, die CSS kopieren in die Zwischenablage legt.

Der Export setzt die Funktionen in fester Reihenfolge zusammen (translate, dann rotate, dann skew, dann scale) und lässt jede Funktion weg, die noch auf ihrem Identitätswert steht; eine unberührte Seite exportiert deshalb transform: none. Eine Browsermessung bestätigte, dass die gekürzte Zeichenfolge dieselbe Matrix ergibt wie die vollständige: translate(77px, 0px) allein und translate(77px, 0px) rotate(0deg) skew(0deg, 0deg) scale(1, 1) berechnen beide matrix(1, 0, 0, 1, 77, 0).

  1. Wählen Sie eine Voreinstellung oder bleiben Sie bei Custom. Tilt ist translate(18px, -12px) rotate(-12deg) skew(-8deg, 2deg) scale(1.04, 1.04); Zoom ist scale(1.55, 1.55) mit rotate(4deg); Flip spiegelt die X-Achse mit scale(-1, 1). Jede Feldänderung stellt die Auswahl auf Custom zurück.
  2. Tippen Sie einen Wert in eines der neun Felder. Bühne und Codefeld aktualisieren bei jedem Tastendruck, und die Vorschau nutzt bereits den begrenzten Wert; 999 in translateX verschiebt die Karte auf 240px.
  3. Klicken Sie daneben, um zu bestätigen. Beim Verlassen des Feldes wird die gespeicherte Zahl zurückgeschrieben, sodass Feld, Bühne und Code übereinstimmen; ein geleertes Feld stellt die zuvor gespeicherte Zahl wieder her, statt auf null zu springen.
  4. Setzen Sie den Ursprung mit den beiden Prozentfeldern. Die 12px-Markierung auf der Karte zeigt den Ursprungspunkt (Standard 50% 50%), und der Export ergänzt transform-origin nur, wenn der Ursprung nicht 50% 50% ist und mindestens eine Transformationsfunktion aktiv ist.
  5. Drücken Sie CSS kopieren für die Deklaration von .transformed-element, oder Zurücksetzen, um alle neun Felder und die Voreinstellung auf die Startwerte zu bringen.

Startwerte, feste Funktionsreihenfolge und die beim Bestätigen zurückgeschriebenen Werte

Eine Transformation, vier Funktionen in fester Reihenfolge

Die Werkbank schreibt zuerst translate(...), dann rotate(...), dann skew(...) und zuletzt scale(...). Funktionen, die noch auf ihrem Identitätswert stehen, entfallen im Export: eine reine Verschiebung exportiert transform: translate(77px, 0px); und wenn nichts gesetzt ist, lautet der Block transform: none; ohne transform-origin-Zeile.

Die Reihenfolge ist nicht kosmetisch. In der Browsermessung ergab translate(100px, 0px) rotate(45deg) die Matrix(0.707107, 0.707107, -0.707107, 0.707107, 100, 0), während rotate(45deg) translate(100px, 0px) matrix(0.707107, 0.707107, -0.707107, 0.707107, 70.7107, 70.7107) ergab: an zweiter Stelle wird die Verschiebung von der Drehung mitgeführt.

Grenzen und das Zurückschreiben beim Bestätigen

Versatz -240 bis 240 px, Skalierung -3 bis 3, Drehung -360 bis 360 Grad, Scherung -89 bis 89 Grad und Ursprung 0 bis 100 %. Während der Eingabe bleibt die Vorschau in diesen Grenzen; beim Verlassen ersetzt die begrenzte Zahl den Feldtext, sodass 999 im Ursprung Y 100 % speichert und -300 in translateX -240 px.

Die neun Felder akzeptieren jeden Schritt, deshalb wird die Skalierung 1.04 der Voreinstellung Tilt nicht als ungültig markiert. Die Scherung endet bei 89 Grad, weil tan(90 Grad) unbegrenzt ist, und die Ursprungsmarkierung kann die Karte nicht verlassen, weil der Ursprung 0-100 % nie verlässt.

Was diese Seite nicht macht

Die Seite ist zweidimensional: kein translateZ, rotateX/rotateY, keine Perspektive und keine matrix()-Eingabe, und die Bühne trägt ein einzelnes Element. Der Selektor ist fest (.transformed-element), und das Panel exportiert eine transform-Deklaration plus optionales transform-origin; Ausgaben für Media Queries oder CSS-Variablen gibt es nicht.

Alles läuft in der Seite. Alle neun Felder, die drei abweichenden Voreinstellungen, CSS kopieren und Zurücksetzen erzeugten in der Messung keine einzige Netzwerkanfrage; nur das gemeinsame Analyse-Tag lädt mit der Seite. Bei 390px Breite ist die Karte 118x118 (150x150 am Desktop) mit derselben 12px-Markierung und ohne horizontales Überlaufen.

Zuletzt verwendet: