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

CSS :hover伪类不生效如何解决?附对应HTML与CSS代码

问题原因排查

你的:hover伪类不生效核心是CSS选择器匹配关系和HTML结构不对应:

  • 你写的#Home:hover #Homesub选择器规则是「选中id为Home的元素内部的id为Homesub的元素」,但从HTML结构来看,id为Home的a标签和包裹Homesub的ul是同级关系,#Homesub根本不在#Home的内部,所以触发hover时完全匹配不到要显示的元素
  • 就算修改选择器让hover触发显示,直接把hover事件绑定在a标签上也会有交互问题:鼠标移动到下拉选项的过程中会离开a标签,导致下拉菜单直接消失
  • 你目前只设置了#Homesub这个a标签的display属性,它外层的ul、li标签默认还是会占据布局空间,隐藏逻辑不完整

修复方案

把hover触发绑定在Home对应的li父元素上,直接控制整个子菜单ul的显隐即可,修改后的代码如下:

html {
  box-sizing: border-box;
}

a {
  text-decoration: none;
  color: black;
}

.nav_bar>li {
  padding: 20px;
  flex-basis: 0;
  flex-grow: 1;
  background-color: #ffffa8;
  /* 新增相对定位方便子菜单定位,避免影响其他元素布局 */
  position: relative;
  height: 1rem;
  text-align: center;
  flex-direction: column;
}

/* 直接隐藏整个子菜单 */
.nav_bar .sub {
  display: none;
  /* 绝对定位调整子菜单展示位置,可按需修改参数 */
  position: absolute;
  top: 100%;
  left: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

/* 父级li hover时显示子菜单 */
.nav_bar>li:hover .sub {
  display: block;
}
<nav>
  <ul class="nav_bar">
    <li>
      <a href="Home.html" id="Home">Home</a>
      <ul class="sub">
        <li><a href="Members.html" id="Homesub">Members</a></li>
      </ul>
    </li>
  </ul>
</nav>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:03