查找当前的SkewX、SkewY和Rotate值-Javascript

查找当前的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

考虑到可能存在仅使用旋转或仅使用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(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上,用户是什么?