注意:你應該使用如果skewX和/或skewY而不是歪斜的。見the MDN info here。
它會更容易跟蹤變換的一個變量:
var elRot, // the rotation 'counter' for the element 'el'
elScale, // the scale 'counter' for the element 'el'
elSkewX, // the skewX 'counter' for the element 'el'
elSkewY; // the skewY 'counter' for the element 'el'
// initialize values
elRot = 0;
elScale = 1;
elSkewX = 0;
elSkewY = 0;
或對象:
var elTranform = {
rot: 0, // the rotation 'counter' for the element 'el'
sca: 1, // the scale 'counter' for the element 'el'
skx: 0, // the skewX 'counter' for the element 'el'
sky: 0 // the skewY 'counter' for the element 'el'
};
所以,現在你可以用函數開始(您還是會使用VAR el爲元素),第一步是獲取值,因此您更改給定函數的參數:
// use this with separate vars
function setTransform (element, rotationArg, scaleArg, skewXArg, skewYArg) {
// how to write some code to set the el transform style...
}
// use this with the object
function setTransform (element, elTransformArg) {
// how to write some code to set the el transform style...
}
接下來,您必須重新指定要「住」,在你給的任何其它轉換中,如果skewX仍然45deg:
function setTransform (element, rotationArg, scaleArg, skewXArg, skewYArg) {
// the brackets cause the string to be evaluated before being assigned
element.style.transform = ("rotate() scale() skewX() skewY()");
}
或
function setTransform (element, elTransformArg) {
element.style.transform = ("rotate() scale() skewX() skewY()");
}
現在你必須把參數到字符串:
function setTransform (element, rotationArg, scaleArg, skewXArg, skewYArg) {
element.style.transform = ("rotate(" + rotationArg + "deg) scale(" + scaleArg
+ ") skewX(" + skewXArg + "deg) skewY(" + skewYArg + "deg)");
}
或
function setTransform (element, elTransformArg) {
element.style.transform = ("rotate(" + elTransformArg.rot + "deg) scale("
+ elTransformArg.sca + ") skewX(" + elTransformArg.skx + "deg) skewY("
+ elTransformArg.sky + "deg)");
}
有點亂,所以放在一個變量的字符串(這將是前綴有益):
function setTransform (element, rotationArg, scaleArg, skewXArg, skewYArg) {
var transfromString = ("rotate(" + rotationArg + "deg) scale(" + scaleArg
+ ") skewX(" + skewXArg + "deg) skewY(" + skewYArg + "deg)");
// now attach that variable to each prefixed style
element.style.webkitTransform = transfromString;
element.style.MozTransform = transfromString;
element.style.msTransform = transfromString;
element.style.OTransform = transfromString;
element.style.transform = transfromString;
}
或
function setTransform (element, elTransformArg) {
var transfromString = ("rotate(" + elTransformArg.rot + "deg) scale("
+ elTransformArg.sca + ") skewX(" + elTransformArg.skx + "deg) skewY("
+ elTransformArg.sky + "deg)");
// now attach that variable to each prefixed style
element.style.webkitTransform = transfromString;
element.style.MozTransform = transfromString;
element.style.msTransform = transfromString;
element.style.OTransform = transfromString;
element.style.transform = transfromString;
}
現在調用該函數:
setTransform(el, elRot, elScale, elSkewX, elSkewY);
或
setTransform(el, elTransform);
要更改數值,變量或對象的值,並調用:
elRot = 45;
elSkewX = 30;
setTransform(el, elRot, elScale, elSkewX, elSkewY);
或
elTransform.rot = 45;
elTransform.skx = 30;
setTransform(el, elTransform);
這種方式,你只需要改變「計數器」值,各變換,並調用該函數應用變換。如上所述,保留任何未發生變化的變換非常重要,因爲它只是用新變換替換之前的變換的CSS值。賦予多個值意味着只使用最後一個值(CSS的C部分)。
只想指出,在該MDN頁面上有一個說明:「Gecko 14.0刪除了對skew()的實驗支持,但它由於兼容性的原因,它被重新引入了Gecko 15.0中,因爲它是非標準的,將來**可能會被刪除**,請不要**使用它。 –