Bootstrap 4中新增.row与直接添加col-12的布局差异是什么?
Bootstrap 4 中单个
.row 与多个 .row 的区别解析 我之前也纠结过这个点,Bootstrap 4 官方文档确实没把这个细节讲得特别直白,咱们直接拆解这两种写法的核心差异:
1. 布局结构与间距逻辑
Bootstrap 的 .row 核心作用是包裹列,同时通过左右负外边距抵消 .container 的内边距,而每个 .col-* 自带的左右内边距则用来形成列之间的间隙(gutter)。
- 片段1的两个
.row是完全独立的布局行:第一个.row里的col-12占满整行,和第二个.row的两个col-6属于两个独立区块,它们之间默认会保持行级的分隔感(如果需要额外垂直间距,还能给.row加mt-*/mb-*类单独控制)。 - 片段2的单个
.row把三个列放在同一容器里:col-12占满12格后,后面的两个col-6会自动换行到下一行,但它们共享同一个.row的负外边距,col-12底部和下方两列顶部之间没有默认的行间距,需要手动给列加mb-*/mt-*类来调整。
2. 布局控制的独立性
- 用多个
.row(片段1)可以独立控制每一行的对齐方式:比如给第一个.row加justify-content-center让标题居中,给第二个.row加justify-content-between让两列两端对齐,两行的布局逻辑完全不互相影响。 - 单个
.row(片段2)的对齐类会作用于所有列:比如给这个.row加align-items-center,会让col-12和下面两个col-6全部垂直居中,没办法单独控制某一行的对齐。
3. 响应式适配的灵活性
当需要针对不同屏幕尺寸调整布局时:
- 片段1的两个
.row可以各自设置响应式类,比如把第一个.row的col-12改成col-md-8,第二个.row的col-6改成col-md-4,两行的布局变化完全独立。 - 片段2的三个列在同一
.row里,调整响应式时要考虑整体的栅格总和:比如给col-12加col-md-8,给两个col-6加col-md-2,在md及以上屏幕它们会排在同一行(8+2+2=12),而片段1的两行依然是分开的。
实际场景建议
- 如果是独立区块的布局(比如页面标题区 + 内容区),优先用多个
.row,结构更清晰,后续维护时更容易单独调整每个区块。 - 如果是连续流式内容(比如一个标题紧跟两个并排卡片),用单个
.row也可以,但要记得手动添加垂直间距类来区分行。
内容的提问来源于stack exchange,提问作者giò




