【发布时间】:2015-05-29 10:57:38
【问题描述】:
我无法计算相对于触发事件的元素的点击坐标(x 和 y)。我没有在网上找到一个简单的例子。
我在 HTML 页面中有一个简单的svg(左边距为 100 像素)。它包含一个group(翻译为30px 30px),它附加了一个onclick 监听器。在 group 里面,我有一个 rect,宽度和高度为 50px。
单击group 元素的任何部分后,我得到一个事件对象,其坐标相对于HTML 页面(evt.clientX 和evt.clientY)。
我需要知道用户在 group 元素(持有 onclick 侦听器的元素)中点击的确切位置。
如何将clientX 和clientY 坐标转换为group 元素坐标。所以说,如果我点击rect 的最左上部分,它应该给我 x=0 和 y=0。
这是我目前拥有的:
<!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>
【问题讨论】:
标签: javascript html svg