I haven't been able to calculate the click coordinates (x and y) relative to the element triggering the event. I have not found an easy example online.
I have a simple svg
(with 100px left margin) in an HTML page. It contains a group
(translated 30px 30px) which has an onclick
listener attached. And inside that group
I have a rect
with 50px width and height.
After I click any part of the group
element, I get an event object with coordinates relative to the HTML page (evt.clientX
and evt.clientY
).
What I need to know is where exactly the user clicked inside the group
element (the element holding the onclick listener).
How do I convert clientX
and clientY
coordinates to the group
element coordinates. So say, if I click the top leftmost part of the rect
it should give me x=0 and y=0.
Here is currently what I have:
<!DOCTYPE html>
<html>
<head>
<style>
body{
background:black;
}
svg{
fill:white;
background:white;
position: absolute;
top:100px;
left:100px;
}
</style>
<script>
function clicked(evt){
alert("x: "+evt.clientX+" y:"+evt.clientY);
}
</script>
</head>
<body>
<div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
<g transform="translate(30 30)" onclick="clicked(evt)">
<rect x="0" y="0" width="50" height="50" fill="red"/>
</g>
</svg>
</div>
</body>
</html>
question from:
https://stackoverflow.com/questions/29261304/how-to-get-the-click-coordinates-relative-to-svg-element-holding-the-onclick-lis 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…