2017-09-26 6 views
0

Je connais un moyen très facile d'obtenir la transformation de la matrice actuelle de tout élément SVG:Obtenez la transformation de la matrice actuelle d'un élément SVG

// 't' is a string 
var t = window.getComputedStyle(nativeElement, null).transform 
console.log(t); 

Le problème est que les précédentes méthode renvoie un nombre sans plus de six décimales. Par exemple, le code précédent peut renvoyer:

matrix(0.965926, 0.258819, -0.258819, 0.965926, 0, 0) 

Existe-t-il un moyen d'obtenir la transformation matricielle de n'importe quel élément SVG plus précisément?

+0

est la transformation d'un attribut ou un style? –

+0

transformer est un attribut: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform – Cequiel

+0

vous le traitez comme un style dans la question, c'est pourquoi j'ai demandé. Si c'est un style, il n'y a pas grand-chose à faire, si c'est un attribut, vous pouvez l'obtenir via le DOM. –

Répondre

2

Pour obtenir l'attribut transform actuel comme un objet SVGMatrix, vous pouvez utiliser:

element.transform.baseVal.consolidate().matrix 

var myrect = document.getElementById("myrect"); 
 

 
console.log(myrect.transform.baseVal.consolidate().matrix);
<svg> 
 
    <rect id="myrect" width="10" height="10" transform="scale(2) rotate(45)"/> 
 
</svg>