SVG图形中的Marker悬停事件(图表)

5

我正在构建自己的折线图,并想知道如何在悬停时使<path>线条交互。

例如(简化):

<path d="M5,10L10,20L30,40"></path>

当用户悬停在5,1010,20上时,我该如何执行悬停事件并显示一个<circle>或者其他指令呢?我是否遗漏了某些内容,还是需要检测鼠标位置?


我编辑了代码,没有复制我的实际代码,所以我没有注意到错误。我现在会立即搜索标记。 - John Smith
http://www.w3.org/TR/SVG/painting.html#Markers - Joey
是的,那就是点,但我认为我真正想知道的是如何将事件附加到这些标记?https://dev59.com/XVnUa4cB1Zd3GeqPbIWb。我不明白为什么这不可能,我希望图表具有这种功能。 - John Smith
1个回答

9

SVG有一个叫做标记的概念,允许在路径节点中添加任意形状,但是标记无法接收事件,根据SVG标记规范文本的最后一行

“标记”元素的内容附加的事件属性和事件侦听器不会被处理;只有“标记”元素的渲染方面会被处理。

如果您认为这应该改变,请联系W3C SVG组

如果您想要响应事件,则必须手动创建自己的形状并确保它们位于正确的位置。


这很可能会在SVG2中得到支持,请参见https://svgwg.org/svg2-draft/painting.html#Markers,特别是第11个问题“使定位标记上的交互工作”。 - Erik Dahlström
所以,如果鼠标悬停在路径上,获取鼠标的x、y坐标,并选择最接近这些坐标的点? - John Smith
1
当然,getPointAtLength 可以帮助解决这个问题。 - Robert Longson
在研究了它是什么之后,我不确定我应该用它来做什么XD,你能详细说明一下吗?我找到了一个脚本,可以在路径悬停时返回SVG的坐标。http://jsfiddle.net/EfJx8/ - John Smith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接