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

如何用CSS选择器实现hover跨兄弟容器的子元素样式控制?

纯CSS实现跨容器hover联动显示效果

核心思路

利用CSS :has() 选择器让父容器感知子元素的hover状态,从而统一控制所有容器内的对应目标元素显示/隐藏,这是目前纯CSS实现跨兄弟容器元素联动的最优方案。

完整代码

HTML(修正原代码的标签语法错误)

<div id="main">
  text that the text below goes under<br>
    
  <div class="content content-1">
    <span class="hover1">reveals style1 text when hovered</span><br>
    <span class="hover2">reveals style2 text when hovered</span><br>
    <span class="style1">words words words<br>
    words words words</span>
    <span class="style2">different words<br>
    words words words</span>
  </div>
    
  <div class="content content-2">
    <span class="hover1">reveals style1 text when hovered</span><br>
    <span class="hover2">reveals style2 text when hovered</span><br>
    <span class="style1">words words words<br>
    words words words</span>
    <span class="style2">different words<br>
    words words words</span>
  </div>
</div>

CSS

/* 基础样式:默认隐藏目标文本 */
.style1, .style2 {
  display: none;
}

/* 两个content容器的差异化样式 */
.content-1 {
  background-color: #f0f0f0;
  padding: 10px;
  margin: 10px 0;
}

.content-2 {
  background-color: #e0f0ff;
  padding: 10px;
  margin: 10px 0;
}

/* 核心联动逻辑 */
/* 当任意content内的hover1被hover时,显示所有style1 */
#main:has(.hover1:hover) .style1 {
  display: block;
}

/* 当任意content内的hover2被hover时,显示所有style2 */
#main:has(.hover2:hover) .style2 {
  display: block;
}

选择器说明

  • #main:has(.hover1:hover):检测父容器#main内是否有处于hover状态的.hover1元素,只要有一个满足条件,就会触发后续样式规则。
  • 后续的.style1会选中#main下所有的.style1元素,无论它在第一个还是第二个content容器中,直接实现跨容器的hover联动效果。

兼容性说明

:has() 选择器目前已被Chrome、Firefox 121+、Safari等主流现代浏览器支持,若需兼容更老旧浏览器,才考虑使用JavaScript辅助实现,按需求优先采用纯CSS方案即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 14:27:31