2017-09-26 91 views
0

我知道一個很簡單的方法來得到任何SVG元素的當前矩陣變換:獲取一個SVG元素的當前矩陣變換

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

的問題是,以不超過六以前的方法返回號碼小數點。例如,以前的代碼可能會返回:

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

是否有一種方法可以更準確地獲取任何SVG元素的矩陣轉換?

+0

被變換屬性或風格? –

+0

變換是一個屬性:https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/transform – Cequiel

+0

您將它視爲問題中的一種風格,這就是爲什麼我問。如果它是一種風格,則不需要做太多的工作,如果它是一個屬性,你可以通過DOM獲取它。 –

回答

2

爲了得到當前transform屬性爲SVGMatrix對象,你可以使用:

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>