来自CSS的jQuery矩阵值

来自CSS的jQuery矩阵值,jquery,matrix,css-transforms,Jquery,Matrix,Css Transforms,我试图从CSS转换属性中获取矩阵值,但由于某些原因,它不起作用 var object = $(this); var transMatrix = object.css("-webkit-transform") || object.css("-moz-transform") || object.css("-ms-transform") || object.css("-o-transfo

我试图从CSS转换属性中获取矩阵值,但由于某些原因,它不起作用

var object = $(this);

var transMatrix = object.css("-webkit-transform") || 
                  object.css("-moz-transform") || 
                  object.css("-ms-transform") || 
                  object.css("-o-transform") || 
                  object.css("transform");

console.log("Matrix = " + transMatrix);

var values = transMatrix.split('(')[1];
    values = transMatrix.split(')')[0];
    values = transMatrix.split(',');

console.log("Values = " + values);

var a = values[0];
console.log("a = " + a);
var b = values[1];
console.log("b = " + b);

var scale = Math.sqrt(a*a + b*b);
console.log("Scale = " + scale);                                        

var sin = b/scale;
console.log("Sin = " + sin);

var transScale = Math.round(scale * 100) / 100;
console.log("Transform Scale = " + transScale);

var transAngle = Math.round(Math.asin(sin) * (180/Math.PI));
console.log("Transform Angle = " + transAngle);
但当我输出这个时,控制台显示:

Matrix = matrix(0.496273075820661, 0.06093467170257374, -0.06093467170257374, 0.496273075820661, 0, 0)
Values = matrix(0.496273075820661, 0.06093467170257374, -0.06093467170257374, 0.496273075820661, 0, 0)
a = matrix(0.496273075820661
b =  0.06093467170257374
Scale = NaN
Sin = NaN
Transform Scale = NaN
Transform Angle = NaN 
从CSS中获取矩阵值后,它似乎返回了
“未定义的”
(正常工作)

我的“拆分”方法有什么问题吗

var values = transMatrix.split('(')[1];
values = transMatrix.split(')')[0];
values = transMatrix.split(',');
应该是

var values = transMatrix.split('(')[1];
values = values.split(')')[0];
values = values.split(',');
或者干脆把它们链起来:

var values = transMatrix.split('(')[1].split(')')[0].split(',');
事实上,您可以使用正则表达式和:


console.log(“a=“+sin”)
应该是
console.log(“a=“+a”)
——在整个代码中,您都记录了错误的变量。@Blazemonger漫长的一天!但只是改变了他们,更新了魔术!在我看来,连锁店是最好的。Regex只是搞乱了我的脑袋。。。哈哈。奇怪的是,它以前在我的问题中的代码中起作用,但后来坏了……当transMatrix是3d变换时,你的正则表达式不起作用,因为它也会匹配matrix3d中的3。你可以用这个正则表达式来解决这个问题:transMatrix.match(/[\d\.]+(?=[,)])/g)检查数字后面是否有逗号或右括号
var values = transMatrix.match(/[\d\.]+/g);