svg - 捕获被另一个透明形状阻挡的形状的鼠标悬停事件

标签 svg d3.js

我有许多透明重叠的椭圆(如下所示)。

我在鼠标悬停时突出显示每个椭圆,但不可能突出显示许多椭圆,因为其他椭圆已绘制在它们上面。

根据我对 svg 的有限了解,有以下三种解决方案:

  • 找到某种方法来仅检测每个椭圆边缘上的鼠标悬停。
  • 使用贝塞尔曲线绘制椭圆。
  • 重新排列椭圆的绘制顺序。我不确定如何做到这一点,或者是否有可能在考虑到所有这些形状的情况下以这种方式解决它。

非常感谢任何帮助!

enter image description here

最佳答案

svg 中的目标区域只是屏幕上绘制的区域。因此,从理论上讲,您的椭圆应该只能在其笔划上悬停。如果情况并非如此,那么您可能会使用 none 以外的其他内容设置填充(也许是 rgba(0,0,0,0) ?)。

您还可以将悬停设置在 g 元素上而不是椭圆上。

您可以在此处查看示例:http://jsfiddle.net/r65E9/

ellipse {
  stroke: #fff;
  stroke-width: 1;
  fill: none;
}

ellipse:hover {
  stroke: #f66;
}

关于svg - 捕获被另一个透明形状阻挡的形状的鼠标悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11389212/

相关文章:

jquery - SVG 悬停过渡

javascript - 如果svg <text>的高度和宽度大于javascript中svg <rect>的高度和宽度,如何更改它?

php - SVG - 定位不起作用

javascript - 通过 Flask 服务器上的队列访问 d3.json 对象时出现问题

javascript - D3.js : How to read data from JSON in Grouped Bar Chart

css - 如何在jsplumb中设置连接线的不透明度?

html - 根据 svg 路径旋转图像

javascript - 更改 Javascript 对象数组数据

javascript - 获取计算的直方图 bin 阈值

javascript - 为什么线路没有变化?