<p>row-cols-lg-4 是作用于 .row 的响应式列数控制类,仅对无宽度声明的 .col 生效,强制其在 ≥992px 屏幕下自动均分为 4 列;若子元素含 col-* 类(如 col-6),则该工具类失效。</p>

直接说结论:row-cols-lg-4 不是给单个 <div class="col"> 用的,它是作用在 <div class="row"> 上的「整行列数控制类」,只对「自动等宽列」(即不写 col-* 的 col)生效。
row-cols-lg-4 是什么,不是什么
它属于 Bootstrap 5+ 引入的「响应式列数工具类」,本质是给 .row 设置 flex-wrap: wrap + flex-basis 计算逻辑,让内部所有子 .col 自动均分宽度。但它完全忽略你写的 col-sm-6、col-md-8 这类显式列宽类 —— 只要写了具体 col-*,row-cols-* 就失效。
常见误用场景:
- 在
<div class="row row-cols-lg-4">里混用<div class="col-6">和<div class="col">→ 前者按 6 列宽渲染,后者被强制均分剩余空间,结果错乱 - 期望
row-cols-lg-4让小屏幕也变成 4 列 → 错,它只在lg及以上生效,xs/sm/md下退化为默认单列(除非额外加row-cols-*)
什么时候该用 row-cols-lg-4
适合「内容结构统一、无需精细列宽控制」的场景,比如卡片列表、图标网格、商品瀑布流入口项。它省去每个 col 写宽度类的重复劳动。
正确用法示例:
<div class="row row-cols-lg-4 row-cols-md-2 row-cols-1"> <div class="col">Card 1</div> <div class="col">Card 2</div> <div class="col">Card 3</div> <div class="col">Card 4</div> <div class="col">Card 5</div> </div>
说明:
- 大屏(≥992px):4 列等宽,第 5 个自动换行
- 中屏(≥768px):2 列等宽
- 小屏(
- 所有
col都没写具体宽度,纯靠row-cols-*驱动
和传统 col-lg-3 的核心区别
两者目标相似(都是想在大屏下铺 4 列),但实现逻辑完全不同:
-
col-lg-3:每个列独立声明占 3/12 = 1/4 宽度,可混用其他宽度(如一个col-lg-6+ 两个col-lg-3) -
row-cols-lg-4:整行统一调度,所有col必须无宽度声明,否则冲突;无法实现「一个宽、三个窄」这类混合布局 - 性能影响:两者都基于 Flexbox,无实质差异;但
row-cols-*在 JS 操作 DOM 后重排时更稳定(少一层宽度计算干扰)
容易被忽略的兼容性细节
row-cols-* 类在 Bootstrap 4 中不存在,只从 Bootstrap 5 开始支持。如果你项目还在用 BS4,强行写 row-cols-lg-4 不会报错,但完全无效 —— 浏览器只会当普通未定义类忽略。
另外注意:row-cols-* 对嵌套的 .row 不起作用。例如外层 row-cols-lg-4 包着一个内层 <div class="row">,内层的列不会被外层规则影响,必须单独给内层加对应类。


















