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

修复左侧导航顶级菜单项hover时红色条占满页面高度的问题

修复左侧导航hover红色条高度问题

问题场景

开发左侧导航时,设置鼠标悬停菜单项时左侧显示红色条。目前Home项及其子项表现正常,但其他无下拉子菜单的顶级菜单项hover时,红色条会拉伸至整个页面高度,需要调整使其仅覆盖对应菜单项的实际高度。

问题原因

当前红色条的伪元素::before是基于顶级菜单项的<li>元素(已设置position:relative)进行绝对定位的。对于没有下拉子菜单的<li>,其高度未被内容充分约束,导致top:0; bottom:0的定位规则让红色条撑满整个页面高度。正确的做法是让伪元素基于菜单项的<a>标签本身定位,确保红色条仅匹配<a>的高度。

修复方案

步骤1:给顶级菜单项的<a>标签添加相对定位

让伪元素以<a>为基准定位,替换原有的以<li>为基准的逻辑:

.left-bar .top-level-item [href] {
  position: relative;
}

步骤2:调整伪元素的定位规则

将伪元素的高度设置为100%(匹配<a>的高度),替代原有的top:0; bottom:0,避免因父元素高度不确定导致的拉伸问题:

.left-bar .top-level-item [href]:hover::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 5px;
  background-color: red;
}

完整修复后的CSS代码

.vertical.dropdown.menu [href] > i {
  display: block;
}

.vertical.dropdown.menu [href] {
  display: block;
  text-align: center;
}

.left-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 150px;
  height: 100%;
  color: #333;
  background: #FFFFFF;
}

.left-bar .vertical.menu.nested {
  padding: 0;
}

.left-bar [href] > i {
  display: block;
}

.left-bar [href] {
  display: block;
  text-align: left;
  padding: 0;
  color: #333;
}

.left-bar [href]:hover {
  background: #9B9B9BFF;
}

.left-bar .vertical.menu > li {
  position: relative;
  background: #FFFFFF;
  color: #333;
  border: 0;
}

/* 新增:给顶级菜单项的a标签设置相对定位 */
.left-bar .top-level-item [href] {
  position: relative;
}

/* 调整伪元素定位规则 */
.left-bar .top-level-item [href]:hover::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 5px;
  background-color: red;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:40:34