How do I get the global coordinates of a grouped svg element?

后端 未结 2 1874
独厮守ぢ
独厮守ぢ 2021-01-02 13:32

Suppose I have the following document (fiddle):


    
        

        
相关标签:
2条回答
  • 2021-01-02 14:00

    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/

    0 讨论(0)
  • 2021-01-02 14:17

    You could use the function .getBoundingClientRect() to get the bounding box. Then, use height, width, top and left values to find the center position of your element.

    Refer to https://developer.mozilla.org/es/docs/Web/API/Element/getBoundingClientRect

    0 讨论(0)
提交回复
热议问题