You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

多列展示列表且列内元素数量均等(元素高度不同时)的布局实现咨询

多列展示列表且列内元素数量均等(元素高度不同时)的布局实现咨询

各位好,我现在遇到一个布局难题:我需要把无序列表分成3列展示,但不需要垂直对齐——具体来说,就是要消除示例里第2个和第5个列表项之间的空隙。

我已经试了各种布局方式:flexbox、浮动、表格、多列布局还有网格布局,看起来挺简单的问题,但就是找不到合适的解法。另外有几个限制条件:我没法修改HTML的输出结构,也不知道每个列表项的高度,所以固定像素值的方案肯定行不通。用JavaScript来解决也是可以接受的。

对了,如果能实现下面这种排序方式就更棒了,不过这个算是额外的小需求,等我找到核心问题的思路应该自己能搞定:

1 3 5
2 4

先给大家看看我现在的代码:

CSS 代码

ul { 
  list-style-type: none; 
  padding: 0;
  color: white; 
  text-align:center;
}

.small { 
  height: 30px
}

.large {
  height: 200px
}

li {
  background:red;
}

li:nth-child(2n) { 
  background:blue;
}

ul {
  display: grid; 
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

HTML 代码

<ul>
  <li class="large">1</li>
  <li class="small">2</li>
  <li class="small">3</li>
  <li class="small">4</li>
  <li class="small">5</li>
</ul>

我想要的最终效果是这样的:
期望的布局效果

重要提醒:这不是关于纯CSS瀑布流布局的问题!在常见的瀑布流方案里,第4个元素会跑到第二行,因为瀑布流的目标是让各列的高度尽量均等。而我的需求是让每列的元素数量尽量一致(直到没有剩余元素),我试过那种瀑布流方案,确实不符合我的需求。

备注:内容来源于stack exchange,提问作者Setyl

火山引擎 最新活动