You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在鼠标悬停SVG的opacity-1n元素时显示opacity-1e元素

解决SVG元素hover联动显示问题

你的问题出在CSS选择器逻辑和规则顺序上,以下是具体分析和修复方案:

问题原因分析

你的两个<path>是同层级的兄弟元素(都在#Layer_1容器下),之前尝试的选择器要么逻辑错误,要么因规则顺序导致不生效:

  • #opacity-1n:hover #opacity-1e:后代选择器,仅适用于#opacity-1e是#opacity-1n子元素的场景,不符合你的DOM结构。
  • #opacity-1n:hover > #opacity-1e:子元素选择器,同样不匹配兄弟关系的元素。
  • #opacity-1n:hover + #opacity-1e/#opacity-1n:hover ~ #opacity-1e:这两个兄弟选择器逻辑正确,但如果默认隐藏样式写在hover样式之后,会因CSS规则优先级相同,后面的规则覆盖前面的,导致hover效果失效。

修复方案

方案1:调整CSS规则顺序(最简单有效)

把默认隐藏样式放在前面,hover触发的显示样式放在后面,确保hover规则覆盖默认规则:

/* 默认隐藏opacity-1e */
#opacity-1e {
  opacity: 0;
}

/* hover opacity-1n时,显示同层级的opacity-1e */
#opacity-1n:hover ~ #opacity-1e {
  opacity: 1;
}

由于两个<path>是相邻兄弟,也可以用相邻兄弟选择器+替代~,效果一致:

#opacity-1e {
  opacity: 0;
}

#opacity-1n:hover + #opacity-1e {
  opacity: 1;
}

方案2:提高hover选择器优先级(若顺序调整无效)

如果受其他CSS规则干扰,可通过增加父元素选择器提升优先级:

#opacity-1e {
  opacity: 0;
}

#Layer_1 #opacity-1n:hover ~ #opacity-1e {
  opacity: 1;
}

额外注意事项

  • 确保.st0类设置了fill颜色,否则即使opacity变为1,元素也可能无法显示。
  • 若#opacity-1e在#opacity-1n之前,CSS无法直接实现联动,此时需要用JavaScript监听mouseover和mouseout事件控制opacity。

内容的提问来源于stack exchange,提问作者sempre83

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 05:27:24