는 document (fiddle) 다음 내가 가진 가정 :그룹화 된 svg 요소의 전역 좌표를 가져 오는 방법은 무엇입니까?
<svg>
<g transform="translate(50,50)">
<rect width="20" height="20" style="fill:black;">
</g>
</svg>
어떻게 내가이 그룹에 있다는 모르는 가정 RECT 요소의 글로벌 좌표를받을 수 있나요?
는 document (fiddle) 다음 내가 가진 가정 :그룹화 된 svg 요소의 전역 좌표를 가져 오는 방법은 무엇입니까?
<svg>
<g transform="translate(50,50)">
<rect width="20" height="20" style="fill:black;">
</g>
</svg>
어떻게 내가이 그룹에 있다는 모르는 가정 RECT 요소의 글로벌 좌표를받을 수 있나요?
사실 찾기가 어려웠습니다. SVGElement
의 메소드를 검색하면 SVGElement
에 메소드가 없다는 페이지가 표시됩니다. 이 방법의 톤이 사실 않습니다,하지만 그들은 상속 : 당신은 당신이 요소입니다 당신이 SVGPoint
를 변환하는 getCTM
또는 getScreenCTM
의 결과를 사용하여 배울 수 있습니다 원하는에 따라
http://www.w3.org/TR/SVG/types.html#InterfaceSVGLocatable
:
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)
당신은 경계 상자를 얻을 수있는 기능 .getBoundingClientRect()
를 사용할 수 있습니다. 그런 다음 height
, width
, top
및 left
값을 사용하여 요소의 가운데 위치를 찾습니다.
는 https://developer.mozilla.org/es/docs/Web/API/Element/getBoundingClientRect
니스를 참조하십시오! matrixTransform에 대해서는 몰랐습니다. javascript는 당신의 바이올린에서 비어 있습니다. 업데이트 했습니까? 이것을 시험해보고 있습니다. –
작동! 감사. Working Fiddle : http://jsfiddle.net/T8aZP/14/ –
thedeeno의 링크 된 바이올린을 시도했지만 기대했던 결과를 얻지 못했습니다. 다음은 getBBox를 사용하여 점의 초기 좌표를 설정하는 포크입니다. http://jsfiddle.net/kitsu_eb/T8aZP/15/ –