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

如何实现非hover元素降低透明度的CSS效果?

解决未hover元素降低透明度的问题

你的代码没达到预期效果,核心原因是两个选择器优先级相同,后面的p { opacity: 1; }把前面p:not(:hover)的样式覆盖了。

最简单的修复方案:调整代码顺序

把默认样式放在前面,:not(:hover)的样式放在后面,靠后声明的相同优先级样式会生效:

p {
    opacity: 1;
}

p:not(:hover) {
    opacity: 0.6;
}

原理说明

  • 所有<p>元素默认透明度为1
  • 当某个<p>没有被hover时,会匹配p:not(:hover)选择器,应用0.6的透明度
  • 被hover的<p>不会触发:not(:hover)规则,保持默认的opacity:1,实现「高亮hover元素,降低其他元素透明度」的效果

如果你的<p>有父容器,也可以通过给父容器加hover事件来实现类似效果(适合需要整体触发的场景):

.container p {
    opacity: 1;
    transition: opacity 0.2s; /* 加过渡动画让效果更流畅 */
}

.container:hover p:not(:hover) {
    opacity: 0.6;
}

这种写法的好处是,只有当鼠标进入容器内时,才会触发未hover元素的透明度变化,交互体验更连贯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:15:40