【发布时间】:2019-04-30 03:05:17
【问题描述】:
我已经为此苦苦挣扎了好几天,但似乎我不会自己解决这个问题。我希望有人可以提供帮助......或者只是告诉我这根本不可能,我会找到另一种方法:)
这是我的问题的简化版本:
.left {
fill: yellow;
pointer-events: visible;
}
.left:hover {
opacity: 0.3;
}
.middle {
fill: red;
pointer-events: visible;
}
.middle:hover {
opacity: 0.8;
pointer-events: visible;
}
.right {
fill: blue;
}
.right:hover {
opacity: 0.6;
pointer-events: visible;
}
<svg class="test" width="500px" height="500px">
<g name="Layer" class="group">
<ellipse class="left" cx="120" cy="160" rx="80" ry="81" />
<ellipse class="right" cx="342" cy="271" rx="93" ry="97" />
<ellipse class="middle" cx="223" cy="176" rx="115" ry="153" />
</g>
</svg>
将鼠标悬停在椭圆上时,会修改其不透明度。没关系。
我想要实现的是当悬停在两个椭圆的交点上时,两个定义的 :hover 相关椭圆被触发。目前,当鼠标指针在红色椭圆和蓝色椭圆(在交叉点)上时,只有红色的椭圆与悬停有关。
我无法将它们分组,因为:
- 所有 3 个椭圆都将被视为一直悬停
- :hover 效果不同
我认为“指针事件”的全部意义在于一次处理多个重叠的形状,但我一直在尝试以各种可能的方式使用该属性,但没有成功。 我正在使用 Reactjs,所以任何关于 Javascript 解决方案的可能提示都会有所帮助。
【问题讨论】:
-
这与stackoverflow.com/questions/29377443/… 非常相似,我几乎建议这是重复的;但是,这还不是所有主流浏览器都必须跨浏览器解决的问题,因为它还不能在 Firefox 中运行。
-
嘿。感谢您的评论@Connum。我确实看到了这个,并且真的希望有一种更好(和跨浏览器)的方法来实现这一点,因为答案来自 2015 年 :( 问题中的代码 sn-ps 在 Firefox 中仍然不起作用。
标签: javascript css svg