Hinweis: Sie verwenden sollten skewX und/oder skewY statt Skew. Siehe the MDN info here.
Es wäre einfacher, den Überblick über die Transformationen in einer Variablen zu halten:
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;
oder ein Objekt:
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'
};
So, jetzt können Sie mit der Funktion starten (Sie noch var verwenden el für das Element), erhält der erste Schritt die Werte, also ändern Sie die Argumente, die der Funktion übergeben werden:
Weiter Sie haben respezifizieren alle anderen Transformationen, die ‚bleiben‘ werden, in dem Beispiel, das Sie geben, bleibt die 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()");
}
oder
function setTransform (element, elTransformArg) {
element.style.transform = ("rotate() scale() skewX() skewY()");
}
Nun müssen Sie die Argumente in die Zeichenfolge:
function setTransform (element, rotationArg, scaleArg, skewXArg, skewYArg) {
element.style.transform = ("rotate(" + rotationArg + "deg) scale(" + scaleArg
+ ") skewX(" + skewXArg + "deg) skewY(" + skewYArg + "deg)");
}
oder
function setTransform (element, elTransformArg) {
element.style.transform = ("rotate(" + elTransformArg.rot + "deg) scale("
+ elTransformArg.sca + ") skewX(" + elTransformArg.skx + "deg) skewY("
+ elTransformArg.sky + "deg)");
}
Ein bisschen chaotisch, so in einer Variablen, die Zeichenfolge setzen (dies für die Präfixe von Vorteil sein wird):
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;
}
oder
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;
}
nun die Funktion aufrufen:
setTransform(el, elRot, elScale, elSkewX, elSkewY);
oder
setTransform(el, elTransform);
Um Werte zu ändern, die Variablen oder Objektwerte ändern und rufen:
elRot = 45;
elSkewX = 30;
setTransform(el, elRot, elScale, elSkewX, elSkewY);
oder
elTransform.rot = 45;
elTransform.skx = 30;
setTransform(el, elTransform);
Auf diese Weise können nur die ‚Zähler‘ Werte ändern müssen, um für jede transformieren, und rufen Sie die Funktion um die Transformation anzuwenden. Wie oben erwähnt, ist es wichtig, alle Transformationen beizubehalten, die nicht geändert werden, da dies einfach den vorherigen CSS-Wert für die Transformation durch den neuen ersetzt. Wenn Sie mehrere Werte angeben, wird nur die letzte verwendet (der C-Teil von CSS).
Würde nur darauf hinweisen, dass auf dieser MDN-Seite gibt es eine Notiz, die sagt: "Gecko 14.0 entfernt die experimentelle Unterstützung für Skew(), aber es wurde aus Kompatibilitätsgründen in Gecko 15.0 neu eingeführt. Da es nicht standardisiert ist und ** wahrscheinlich in Zukunft entfernt wird **, verwende es ** nicht **. –