javascript - 有没有办法检查特定点 (X,Y) 是否在 SVG 元素中?

标签 javascript jquery html svg d3.js

我需要做的是了解鼠标是否离开 SVG 对象(路径,即它不是矩形 - 不能只使用偏移,不能使用圆形 - 不能使用半径和中心位置等)。我不能使用鼠标离开/进入事件,因为我有一个始终位于所有元素上方的鼠标指针。显然我也不能只使用 elementFromPoint - 因为它给出了顶层元素。

那么问题来了: 有没有办法了解坐标 (X,Y) 是否在特定元素 $("#element") 中。

更新:

我将当前代码上传到我的网站 http://pekap.co/example/ 我没有创建 jsfiddle,因为我有 ebmed 的 SVG 对象。 在那里你可以找到我的 JS,我使用的 svg 对象等。

如果您转到 svg 对象,它会更改颜色并出现指针(橙色圆圈)。目标是每当我们离开/进入时更改 SVG 区域的颜色,并仅在 SVG 区域内在鼠标下显示橙色圆圈。

而目前我可以完成其中一个目标(使用不同代码的目标之一)

更新 2。

Erik Dahlström 为我提供了近乎完美的解决方案:在 CSS 中将指针事件设置为无。我现在会这样做,但是为了让我的一天变得完美,如果有一种方法可以检测圆圈的任何部分何时超出 SVG 区域,那就太好了。

最佳答案

我不确定我明白你的意思,指针是跟随鼠标的小圆圈?

如果是这样,那么就让那个圆圈有 pointer-events: none 并且它将对鼠标事件“透明”。请注意,webkit/safari/chrome/blink 尚不支持 mouseentermouseleave,因此您可能需要一些基于脚本的解决方法(不确定 D3 是否已经这样做)。

也应该可以基于在路径元素上使用 CSS :hover 规则来做一个解决方案。在悬停时将某些属性设置为某个值,然后使用 getComputedStyle 检查当前在路径元素上设置的属性。

关于javascript - 有没有办法检查特定点 (X,Y) 是否在 SVG 元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559756/

相关文章:

javascript - 如何缩放 iframe 中的内容以适合我的页面大小

javascript - 在表格行上动画 ng-show

Javascript 获取字符串中所有最常见的字符

jquery - 如何使用 jQuery DataTables 根据列值检索行?

Javascript 多个圆形图

javascript - JavaScript 哈希中的唯一值

javascript - 自定义元素可以扩展输入元素吗?

php - 在 PHP 执行时加载页面

javascript - width() 在 DOM 对象上返回 `null`

javascript - Sequelize 与 PostgreSQL 的关系 (generator-sql-fullstack)