查找当前的SkewX、SkewY和Rotate值-Javascript
考虑到可能存在仅使用旋转或仅使用skewX等多种情况,我如何在元素上查找当前旋转、skewX和skewY变换设置 到目前为止,我返回的旋转角度很好:查找当前的SkewX、SkewY和Rotate值-Javascript,javascript,jquery,matrix,rotation,Javascript,Jquery,Matrix,Rotation,考虑到可能存在仅使用旋转或仅使用skewX等多种情况,我如何在元素上查找当前旋转、skewX和skewY变换设置 到目前为止,我返回的旋转角度很好: getAngle:function(obj){ var matrix=obj.css("-webkit-transform")||obj.css("-moz-transform")||obj.css("-ms-transform")||obj.css("-o-transform")||obj.css("transform"); if
getAngle:function(obj){
var matrix=obj.css("-webkit-transform")||obj.css("-moz-transform")||obj.css("-ms-transform")||obj.css("-o-transform")||obj.css("transform");
if(matrix!=='none'){
var values=matrix.split('(')[1].split(')')[0].split(','),
a=values[0],
b=values[1],
angle=Math.round(Math.atan2(b,a)*(180/Math.PI));
}else{
var angle=0;
};
return angle;
}
这很好,但从其他地方的阅读中,我了解到,一旦应用任何其他变换,都会弄乱矩阵,并且在尝试查找值时会导致问题
我已经阅读了相关链接,但它们似乎没有解决方案
那么,是否可以修改此函数以处理返回skewX和skewY值,而不管是否设置了rotate
谢谢 这是一种解决方案:
var a = [a, b, c, d, e, f];
var qrDecompone = function(a) {
var angle = Math.atan2(a[1], a[0]),
denom = Math.pow(a[0], 2) + Math.pow(a[1], 2),
scaleX = Math.sqrt(denom),
scaleY = (a[0] * a[3] - a[2] * a[1]) / scaleX,
skewX = Math.atan2(a[0] * a[2] + a[1] * a[3], denom);
return {
angle: angle / (Math.PI / 180), // this is rotation angle in degrees
scaleX: scaleX, // scaleX factor
scaleY: scaleY, // scaleY factor
skewX: skewX / (Math.PI / 180), // skewX angle degrees
skewY: 0, // skewY angle degrees
translateX: a[4], // translation point x
translateY: a[5] // translation point y
};
};
请注意,jQuery的最新版本将为您处理css供应商前缀,因此您不需要在jQuery代码中指定
-webkit
和-moz
等变体;它应该只与transform
一起工作。在旧版本的jQuery上,用户是什么?