我需要做的是了解鼠标是否离开 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 尚不支持 mouseenter
和 mouseleave
,因此您可能需要一些基于脚本的解决方法(不确定 D3 是否已经这样做)。
也应该可以基于在路径元素上使用 CSS :hover
规则来做一个解决方案。在悬停时将某些属性设置为某个值,然后使用 getComputedStyle
检查当前在路径元素上设置的属性。
关于javascript - 有没有办法检查特定点 (X,Y) 是否在 SVG 元素中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16559756/