Suppose I have the following document (fiddle):
<svg>
<g transform="translate(50,50)">
<rect width="20" height="20" style="fill:black;">
</g>
</svg>
How do I get the global coordinates of the rect element assuming I don't know that it's in a group?
The SVG <g> element is a container used to group other SVG elements. Transformations applied to the <g> element are also performed on its child elements, and its attributes are inherited by its children.
It was actually kind of hard to find. Searching for methods of SVGElement
results in pages saying SVGElement
has no methods! It does in fact have a ton of methods, but they are inherited:
http://www.w3.org/TR/SVG/types.html#InterfaceSVGLocatable
Depending on what you want you can use the result of getCTM
or getScreenCTM
to transform a SVGPoint
, and thus learn where you element is:
root = document.getElementById('root')
rec = document.getElementById('rec')
point = root.createSVGPoint()
# This is the top-left relative to the SVG element
ctm = rec.getCTM()
console.log point.matrixTransform(ctm)
# This is the top-left relative to the document
ctm = rec.getScreenCTM()
console.log point.matrixTransform(ctm)
http://jsfiddle.net/kitsu_eb/ZXVAX/3/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With