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

如何为flex-wrap布局每行的非末尾列表项添加分隔线

实现固定宽度列表项填满容器且每行最后一项无分隔线

方法一:Grid布局(首推)

这个办法不用手动计算每行的元素数量,不管你加多少列表项、会自动分成多少行,都能完美适配,代码还简洁。

HTML结构

<div class="list-container">
  <div class="list-item">列表项1</div>
  <div class="list-item">列表项2</div>
  <div class="list-item">列表项3</div>
  <div class="list-item">列表项4</div>
  <div class="list-item">列表项5</div>
  <!-- 随便加多少个列表项都行 -->
</div>

CSS代码

.list-container {
  display: grid;
  /* 这里200px是你要的固定宽度,auto-fill会让容器自动把每行填满 */
  grid-template-columns: repeat(auto-fill, 200px);
  /* 列间距设成分隔线的宽度,容器背景色就是分隔线颜色 */
  column-gap: 1px;
  background-color: #ccc; /* 换成你想要的分隔线颜色 */
  width: 100%; /* 让容器占满父元素宽度 */
}

.list-item {
  background-color: #fff; /* 用列表项的背景色盖住容器的颜色,只留间距处显示分隔线 */
  padding: 8px; /* 可选:加内边距让内容不挤 */
  box-sizing: border-box;
}

方法二:Flexbox布局

要是你更习惯用Flexbox,这个方案也能满足需求,同样适配任意行数和列表项数量。

CSS代码

.list-container {
  display: flex;
  flex-wrap: wrap;
  overflow: hidden; /* 把每行最后一项的右侧分隔线切掉 */
  width: 100%;
  padding: 0;
}

.list-item {
  flex: 0 0 200px; /* 固定宽度200px,不允许伸缩 */
  box-sizing: border-box;
  padding: 8px;
  margin-right: 1px; /* 用margin-right做分隔线的宽度 */
  background-color: #fff;
}

.list-container {
  background-color: #ccc; /* 分隔线的颜色 */
}

原理说明

  • Grid方案里,column-gap只会在列表项之间产生空隙,容器的背景色透过空隙就显示成分隔线,每行最后一项右边没有空隙,自然不会有分隔线。
  • Flexbox方案是给每个列表项加右侧margin,容器设置overflow: hidden,这样每行最后一项的右侧margin会被容器裁切掉,只有项和项之间会显示出分隔线。

内容的提问来源于stack exchange,提问作者Lourd Nathaniel Gonzalez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:03:21