2

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 からマトリックス値を取得した後に戻っているようです'undefined'(これは正しく機能しています)。

私の「分割」方法に何か問題がありますか?

4

1 に答える 1

3
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(',');

実際、正規表現と を使用すると、これをもう少しきれいに行うことができます.match

var values = transMatrix.match(/[\d\.]+/g);
于 2013-05-17T15:13:06.603 に答える