使用 CSS columns 属性可原生、语义化地将无序或有序列表分割为多列,无需嵌套 div 或依赖 Bootstrap 网格,兼顾简洁性、可维护性与响应式潜力。
使用 css `columns` 属性可原生、语义化地将无序或有序列表分割为多列,无需嵌套 `div` 或依赖 bootstrap 网格,兼顾简洁性、可维护性与响应式潜力。
在构建导航菜单、分类标签墙或长列表展示时,常需将 <ul> 中的 <li> 项均匀分布为多列(如 4 列)。传统做法(如你示例中用 Bootstrap .row/.col 包裹 li)虽可行,但存在明显问题:
推荐方案:CSS 多列布局(Multi-column Layout)
只需一行 CSS,即可让浏览器自动将连续的 <li> 流式分配到指定列数中:
.list-group { columns: 4; /* 指定列数 */ column-gap: 1.5rem; /* 可选:列间距 */ column-rule: 1px solid #e9ecef; /* 可选:列间分隔线 */}
对应 HTML 保持语义纯净:
<div class="grid"> <ul class="list-group"> <li class="list-group-item">1</li> <li class="list-group-item">2</li> <li class="list-group-item">3</li> <li class="list-group-item">1</li> <li class="list-group-item">2f</li> <li class="list-group-item">3</li> <li class="list-group-item">1</li> <li class="list-group-item">2</li> <li class="list-group-item">1</li> <li class="list-group-item">2</li> </ul></div>
✅ 优势显著:
⚠️ 注意事项:
立即学习“前端免费学习笔记(深入)”;
.list-group { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.5rem;}/* 若需精确控制每列项数,可用 :nth-child(an+b) 分组 */
总结:columns 是解决“语义化列表分栏”最轻量、最合规的方案。它不是替代 Grid 或 Flex 的万能解法,但在纯内容流式分栏场景下,它是更优雅、更符合 Web 标准的选择。