直接给 .row 加 gx-0 是唯一正解:它同时归零 .row 的负外边距和所有子 .col 的左右 padding,保持 flex 布局完整性;其他写法如 margin: 0 或 mx-0 均会破坏 gutter 协议导致列错位。
直接给 .row 加 gx-0 就行,别碰 margin
bootstrap 的 .row 左右负外边距(如 margin-left: -15px)不是“多余样式”,而是和 .col 的左右内边距协同工作的——删掉它但不处理 .col 的 padding,整行会向左偏移 15px,列宽计算全乱。
-
gx-0是唯一正解:它同时归零.row的负外边距 + 所有子.col的左右padding,保持 flex 布局完整性 - 别写
.row { margin: 0; }或mx-0:前者破坏响应式 gutter 协议,后者只清外边距、不碰.col内边距,列依然错位 - Bootstrap 4 不支持
gx-*?那就用.no-gutters(仅适用于 v4.0–v4.6),v5+ 已弃用该类
gx-0 和 g-0 有什么区别?
g-0 归零所有方向 gutter(水平 + 垂直),gx-0 只动水平方向(--bs-gutter-x),垂直方向的 gy 保持不变。多数场景只需水平无间隙,比如卡片横排、导航栏平铺。
- 要彻底清空行列间距 → 用
g-0 - 只想取消左右间隙、保留上下间隙 → 用
gx-0(推荐,更精准) - 移动端无间隙、桌面恢复默认 →
gx-0 gx-md-3,别用px-0 px-md-2混搭,它们不参与 gutter 协议
嵌套 .row 时,gx-0 要加在哪一层?
必须加在**实际产生嵌套的那层 .row 上**。常见错误是只在外层 .row 加,结果内层卡片仍有 15px 左右缩进。
- 嵌套结构中,每层
.row都独立管理自己的 gutter,父层gx-0不影响子层 - 示例:侧边栏布局里,主内容区内的卡片网格需独立取消间隙 → 在那个内层
<div class="row gx-0"> 上加 <li>如果某层嵌套后内容贴边异常,优先检查该层 <code>.row是否漏了gx-0,而不是去调外层容器 -
px-0加在.container上 → 清的是容器自身内边距,不影响内部.row行为 -
px-0加在.col上 → 破坏栅格基线:.row还带着 -15px margin,列实际可用宽度变小,响应式断点失效 - 真要局部微调,用
mx-n2/px-2等负边距工具类,但务必成对使用,且仅用于视觉补偿,非 gutter 替代方案
为什么 px-0 不能替代 gx-0?
px-0 只作用于当前元素的左右 padding,它对 .row 的负外边距毫无影响,也不修改子 .col 的 padding。强行用它,等于只拆了一半协作机制。
gx-0,比手写 CSS 安全十倍。











