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

如何避免嵌套列表父项hover时影响子菜单链接样式?

解决嵌套列表悬停时子菜单链接误变色的问题

问题出在你写的CSS选择器上:.filestab ul li:hover a会选中被hover的列表项下面所有层级的链接,包括子菜单里的,所以父项悬停时子菜单的链接也跟着变白了。

直接改两处CSS就能解决:

  • 把控制悬停时链接变色的选择器,限定为只选当前列表项里直接包含的链接
  • 重置子菜单里的链接在父项悬停时的颜色,恢复原本的蓝色

修改后的完整CSS代码:

.filesubmenu {
  display: block;
  position: absolute;
  width: 164px;
  top: 0;
  left: 0;
  background-color: #bdbebd;
  border-top: 1px #dedfde solid;
  border-right: 1px #000 solid;
  border-bottom: 1px #000 solid;
  border-left: 1px #dedfde solid;
  outline: 1px #fff outset;
  outline-offset: -2px;
}

.filestab ul li {
  display: block;
  padding-right: 16px;
  padding-left: 5px;
  width: calc(100% - 1px);
  height: 20px;
  text-align: left;
  font-family: "Arial";
  font-size: 12px;
}

.filestab ul li:hover {
  background-color: #00007b;
  color: #fff;
}

.filestab ul li a {
  color: #0000ff;
}

/* 只修改当前li下直接span里的链接颜色 */
.filestab ul li:hover > span > a {
  color: #fff;
}

/* 重置子菜单里的链接,父li hover时保持原本蓝色 */
.filestab ul li:hover ul li a {
  color: #0000ff;
}

.filepop1,
.filepop2 {
display: block;
position: absolute;
outline: white 1px outset;
outline-offset: -2px;
border-right: 1px #000 solid;
border-top: 1px #dedfde solid;
border-left: 1px #dedfde solid;
border-bottom: 1px #000 solid;
background-color: #bdbebd;
width: 164px;
left: calc(100% - 3px);
top: -1px;
}

HTML代码不需要修改,保持你原来的即可:

<div class="filestab">
  <ul class="filesubmenu">
    <li><span>I'm an example submenu!</span></li>
    <li><span>Example</span></li>
    <li><span><a href="">Example with link</a></span></li>
    <li><span>Example</span>
      <ul class="filepop1">
        <li><span><a href="">Example with link</a></span></li>
        <li><span><a href="#">Example with link</a></span></li>
        <li><span>Example</span>
          <ul class="filepop2">
            <li><span><a href="">Example with link</a></span></li>
            <li><span><a href="#">Example with link</a></span></li>
            <li><span>Example</span></li>
            <li><span>Example</span></li>
          </ul>
        </li>
        <li><span>Example</span></li>
      </ul>
    </li>
    <li><span>Example</span></li>
    <li><span>Example</span></li>
    <li><span>Example</span></li>
    <li><span>Example</span></li>
  </ul>
</div>
<!-- FILESTAB -->

这样修改后,当你悬停父列表项时,只有它自己的链接会变白,子菜单里的链接保持原本的蓝色,子菜单自己悬停时才会单独变色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 18:54:49