Les transformations SVG peuvent être effectuées via JavaScript en configurant leurs attributs correspondants setAttribute("transform", "translate(x,y)")
mais devrait également être possible via JavaScript pur .
elem.transform.baseVal.getItem(0).setTranslate(x, y); elem.transform.baseVal.getItem(0).setRotate(x, y);
Ces deux devraient fonctionner pour la traduction et la rotation, mais qu'en est-il de l'inclinaison, de la mise à l'échelle et de la matrice? elem.transform.baseVal.getItem(0).setMatrix()
existe, mais autant que je peux le dire, cela exclut aucun params et SVGCreateMatrix()
n'accepte aucun params non plus. Comment suis-je censé le faire, et comme question bonus: qu'est-ce que getItem(0)
fait réellement?
Chaque élément <svg>
a une méthode createSVGMatrix dom.
var matrix = svgElement.createSVGMatrix();
C'est la matrice d'identité.
Vous pouvez alors manipuler ceci …
matrix = matrix.translate(10, 10);
Ou directement …
matrix.a = 3;
Et ensuite l'utiliser
elem.transform.baseVal.getItem(0).setMatrix(matrix);
GetItem (0) obtient le premier élément dans un attribut de transformation, par exemple
transform="translate(1, 1) scale(2)"
getItem(0)
obtient la matrice de translate(1, 1)
et getItem(1)
obtient la matrice de l' scale(2)
Si vous n'avez pas configuré une transformation sur un élément, alors getItem(0)
lancera. Vous pouvez vérifier combien d'éléments utilisent numberOfItems
et / ou ajouter un élément initial à l'aide de createSVGTransformFromMatrix
pour transformer votre matrice en transformée et appendItem
pour ajouter la transformation.