如何获得相对于持有onclick侦听器的SVG元素的点击坐标?

oabarca:

我还无法计算相对于触发事件的元素的点击坐标(x和y)。我还没有在网上找到一个简单的例子。

svg在HTML页面中有一个简单的页面(左边距为100px)。它包含一个group(翻译后的30px 30px),其中onclick附加了一个侦听器。在里面,group我有一个rect50px的宽度和高度。

单击group元素的任何部分后,我将获得一个事件对象,该对象的坐标相对于HTML页面(evt.clientXevt.clientY)。

我需要知道的是用户在group元素(包含onclick侦听器的元素)内确切单击的位置

如何转换clientXclientY协调为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>

Tolokoban:

尝试使用getBoundingClientRect()http//jsfiddle.net/fLo4uatw/

function clicked(evt){
    var e = evt.target;
    var dim = e.getBoundingClientRect();
    var x = evt.clientX - dim.left;
    var y = evt.clientY - dim.top;
    alert("x: "+x+" y:"+y);
}  

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取元素相对于封闭SVG的坐标

来自分类Dev

如何获得内部SVG元素相对于外部SVG元素的视口的位置?

来自分类Dev

如何获得相对于鼠标位置的坐标位置?

来自分类Dev

如何获得鼠标相对于世界的坐标?

来自分类Dev

如何获得相对于当前屏幕或窗口的鼠标坐标(没有整个页面)

来自分类Dev

元素相对于其父级的坐标

来自分类Dev

如何获得相对于父元素的位置?

来自分类Dev

如何获得相对于父元素的 selectionOffset?

来自分类Dev

功能反应式编程相对于事件侦听器的优势

来自分类Dev

如何通过点击地图从Mapviewer获取Mapviewer容器相对于x和y的像素坐标?

来自分类Javascript

元素如何有固定的位置,但相对于容器

来自分类Dev

如果我的点击侦听器没有冒泡,如何使用点击侦听器定位动态添加的 HTML 元素的父元素?

来自分类Dev

如何获得PanResponder相对于父视图的当前触摸坐标?

来自分类Dev

如何跟踪移动的svg元素相对于固定的svg元素的位置?

来自分类Dev

如何应用相对于原始 SVG 而不是目标元素的 SVG 剪辑路径

来自分类Dev

在相对于点击的特定位置添加元素

来自分类Dev

如何相对于SVG中的其他元素定位元素

来自分类Dev

如何获得相对于一维数组元素的二维数组行的总和?

来自分类Dev

如何覆盖相对于整个窗口的按钮的鼠标坐标?

来自分类Dev

是否可能只获得相对于元素的鼠标位置

来自分类Dev

当中间元素溢出时如何使元素相对于外部元素具有粘性:隐藏;?

来自分类Dev

从AS3中的侦听器获取点击坐标

来自分类Dev

CSS:加载SVG并相对于其元素定位

来自分类Dev

如何在GLSL片段着色器中获得相对于法线的视角?

来自分类Javascript

如何删除元素中的所有侦听器?

来自分类Dev

如何使用选择器获取相对于Element实例的元素?

来自分类Dev

如何相对于高度变化的顶部元素移动元素

来自分类Dev

如何设置元素相对于其祖父元素的高度?

来自分类Dev

如何在没有空侦听器的 kotlin 上的适配器上实现点击侦听器?

Related 相关文章

  1. 1

    获取元素相对于封闭SVG的坐标

  2. 2

    如何获得内部SVG元素相对于外部SVG元素的视口的位置?

  3. 3

    如何获得相对于鼠标位置的坐标位置?

  4. 4

    如何获得鼠标相对于世界的坐标?

  5. 5

    如何获得相对于当前屏幕或窗口的鼠标坐标(没有整个页面)

  6. 6

    元素相对于其父级的坐标

  7. 7

    如何获得相对于父元素的位置?

  8. 8

    如何获得相对于父元素的 selectionOffset?

  9. 9

    功能反应式编程相对于事件侦听器的优势

  10. 10

    如何通过点击地图从Mapviewer获取Mapviewer容器相对于x和y的像素坐标?

  11. 11

    元素如何有固定的位置,但相对于容器

  12. 12

    如果我的点击侦听器没有冒泡,如何使用点击侦听器定位动态添加的 HTML 元素的父元素?

  13. 13

    如何获得PanResponder相对于父视图的当前触摸坐标?

  14. 14

    如何跟踪移动的svg元素相对于固定的svg元素的位置?

  15. 15

    如何应用相对于原始 SVG 而不是目标元素的 SVG 剪辑路径

  16. 16

    在相对于点击的特定位置添加元素

  17. 17

    如何相对于SVG中的其他元素定位元素

  18. 18

    如何获得相对于一维数组元素的二维数组行的总和?

  19. 19

    如何覆盖相对于整个窗口的按钮的鼠标坐标?

  20. 20

    是否可能只获得相对于元素的鼠标位置

  21. 21

    当中间元素溢出时如何使元素相对于外部元素具有粘性:隐藏;?

  22. 22

    从AS3中的侦听器获取点击坐标

  23. 23

    CSS:加载SVG并相对于其元素定位

  24. 24

    如何在GLSL片段着色器中获得相对于法线的视角?

  25. 25

    如何删除元素中的所有侦听器?

  26. 26

    如何使用选择器获取相对于Element实例的元素?

  27. 27

    如何相对于高度变化的顶部元素移动元素

  28. 28

    如何设置元素相对于其祖父元素的高度?

  29. 29

    如何在没有空侦听器的 kotlin 上的适配器上实现点击侦听器?

热门标签

归档