2014-12-24 8 views
19

Wenn wir CSS3 transform: operation1(...) operation2(...) verwenden, welche zuerst getan wird?CSS3 Transformation Reihenfolge Angelegenheiten: am weitesten rechts zuerst

Die erste durchgeführte Operation scheint die auf der rechten Seite zu sein., d.h. hier operation2 wird vor operation1 durchgeführt. Nur um sicher zu sein, ist es wahr?

Hinweis: Ich habe an einigen Stellen eine Sache und ihr Gegenteil gelesen (Antworten, Artikel im Internet), also die Frage hier.

+0

Nizza Artikel [** HIER **] (https://staff.washington.edu/fmf/2011/07/15/css3-transform-attribute-order/) –

+0

alle seit Ihre Beispiele sind konsistent mit dem, was Sie denken, und mit der Dokumentation, warum zweifeln Sie? – vals

+0

ist es von links nach rechts. Überprüfen Sie [diese] (https://drafts.csswg.org/css-transforms-1/#transform-rendering) – retrazil

Antwort

24

Ja, die erste Operation durchgeführt ist derjenige, der die meisten auf der rechten Seite., Das heißt hier operation2 vor operation1 erfolgt.

Hier ist die Dokumentation: http://www.w3.org/TR/css-transforms-1/, aber ich habe den Absatz darüber noch nicht gefunden.


Beispiel 1

Hier wird die Skalierung erste geschehen ist, und dann die Übersetzung von 100px vertikal (wenn Übersetzung zuerst fertig war, würde die Skalierung Übersetzung von 500px machen!)

#container { 
 
    \t position: absolute; 
 
    \t transform: translate(0,100px) scale(5); 
 
    \t transform-origin: 0 0; }
<div id="container"><img src="https://i.stack.imgur.com/xb47Y.jpg"></img></div>

Beispiel 2

Hier ist die Übersetzung erste und dann die Skalierung erfolgt (die Skalierung erfolgt nach macht, dass die Übersetzung wie ein 500px-Übersetzung aussieht!)

#container { 
 
    \t position: absolute; 
 
    \t transform: scale(5) translate(0,100px); 
 
    \t transform-origin: 0 0; }
<div id="container"><img src="https://i.stack.imgur.com/xb47Y.jpg"></img></div>

+0

Diese Antwort ist falsch. Es wird von links nach rechts gemacht, wie die andere Antwort sagt. Diese Antwort sollte entfernt werden. – T3rm1

+0

@ T3rm1 Bitte führen Sie die Code-Schnipsel, Sie werden selbst sehen, dass es wahr ist. – Basj

+0

Dies sollte entfernt oder aktualisiert werden, um von links nach rechts zu sagen. Die Spezifikation sagt selbst, dass Transformationen nach rechts angewandt links: https://drafts.csswg.org/css-transforms-1/#transform-rendering –

-2

Es ist von Links bis Rechts

Von W3C Editors Draft

div { 
    height: 100px; width: 100px; 
    transform: translate(80px, 80px) scale(1.5, 1.5) rotate(45deg); 
} 

Dies bewegt das Element sowohl um 80 Pixel in der X und Y-Richtung-Transformation skaliert dann das Element um 150%, dreht sie dann 45 ° im Uhrzeigersinn um die Z-Achse. Beachten Sie, dass die Skalierung und Drehung um die Mitte des Elements erfolgt, da das Element den Standard-Transformationsursprung von 50% 50% hat.

enter image description here

+0

Bitte fügen Sie ein Code-Snippet hinzu, damit wir beobachten können, was Sie vorschlagen. – Basj

+0

Das scheint mit der Spezifikation übereinzustimmen, von links nach rechts. Allerdings kann ich nicht verstehen, wie [dieser Stift] (https://codepen.io/JasonGoemaat/pen/MvoxOK) funktioniert. Es scheint, als würde 'scaleX (2) rotate (45deg)' ein Rechteck erzeugen, das doppelt so breit ist, und dann dieses Rechteck um 45 Grad drehen. Es endet jedoch mit einem fetten Diamanten, der aussieht, als wäre er um 45 Grad gedreht und dann ausgestreckt. Irgendeine Idee warum? Ich denke, Ihr Beispiel sieht gleich aus, wenn Sie die Reihenfolge umkehren btw ... –

+0

Die Spezifikation beschreibt die Reihenfolge der Transformationen falsch. Wenn Sie experimentieren und das umgekehrte CSS verwenden, wird 'transform: rotate (45deg) scale (1.5, 1.5) translate (80px, 80px);', es wird noch deutlicher, dass es zuerst das Richtige tut. Die Spezifikation sollte für einen verwirrenden Wortlaut korrigiert werden – TKoL

Verwandte Themen