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

如何为列表激活项添加与下划线的间距?

问题描述

我有一个横向排列的列表,需要给带有active类的列表项添加下划线。但当前用border-bottom实现时,因为列表项设置了背景色和内边距,下划线会紧贴列表项底部。想要实现类似示例中列表项和下划线之间有间距的效果,且下划线必须通过active类控制,不能用单独的div来做,也可以修改列表项结构。

方法一:用CSS伪元素实现(无需修改HTML)

通过::after伪元素模拟下划线,利用绝对定位调整它和列表项的间距,完全不影响原列表项的样式结构。

最终CSS代码

ul {
  display: flex;
  justify-content: space-between;
  position: relative;
  /* 给ul底部留出下划线的空间,避免和下方元素重叠 */
  padding-bottom: 8px;
}

li {
  list-style-type: none;
  width: 18%;
  background-color: red;
  display: flex;
  justify-content: center;
  padding: 2em 0;
  color: white;
  position: relative;
}

li.active::after {
  content: '';
  position: absolute;
  bottom: -8px; /* 这里控制下划线和列表项的间距 */
  left: 50%;
  transform: translateX(-50%);
  width: 90%; /* 下划线宽度可根据需求调整 */
  height: 4px;
  background-color: blue;
}

HTML代码(保持原有结构)

<h2>实现效果</h2>
<ul>
  <li class="active">Item 1</li>
  <li>Item 2</li>
  <li>Item 3</li>
  <li>Item 4</li>
  <li>Item 5</li>
</ul>

方法二:嵌套内部容器调整结构

把列表项的内容放到内部容器中,将背景色和内边距转移给内部容器,外层li负责控制下划线的位置,这样可以直接用border-bottom实现带间距的效果。

修改后的HTML代码

<h2>实现效果</h2>
<ul>
  <li class="active">
    <div class="item-content">Item 1</div>
  </li>
  <li>
    <div class="item-content">Item 2</div>
  </li>
  <li>
    <div class="item-content">Item 3</div>
  </li>
  <li>
    <div class="item-content">Item 4</div>
  </li>
  <li>
    <div class="item-content">Item 5</div>
  </li>
</ul>

对应的CSS代码

ul {
  display: flex;
  justify-content: space-between;
}

li {
  list-style-type: none;
  width: 18%;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-bottom: 8px; /* 下划线和内容的间距 */
}

.item-content {
  width: 100%;
  background-color: red;
  display: flex;
  justify-content: center;
  padding: 2em 0;
  color: white;
}

li.active {
  border-bottom: 4px solid blue;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:25:19