g-0在Bootstrap 5.3+中仅清除gap而不影响margin和padding,因此需配合mx-0和px-0才能彻底消除间隙;Bootstrap 4则需使用no-gutters类。

为什么 g-0 有时不起作用?
直接给 row 加 g-0 类却仍有间隙,大概率是因为你用的是 Bootstrap 5.3+(尤其是 v5.3.3 起),g-0 只清除 gap,但不碰 padding。而默认 row 本身有 margin-left: -15px 和 margin-right: -15px,col 有 padding-left: 15px 和 padding-right: 15px —— 这才是“看起来有间距”的真正来源。
所以光靠 g-0 不够,得一并处理 margin 和 padding。
最稳妥的写法:同时清 margin 和 padding
推荐直接在 row 上叠加多个工具类,覆盖所有默认偏移:
<div class="row gx-0 mx-0"> <div class="col px-0">内容</div> <div class="col px-0">内容</div> </div>
-
gx-0:清除左右gap(适用于 flex 布局的 row) -
mx-0:清除row的左右margin(抵消 -15px) -
px-0:清除每个col的左右padding(抵消 15px)
注意:gy-0 和 my-0 在水平布局里通常不需要,除非你主动设了 flex-direction: column。
如果用的是 Bootstrap 4,处理方式完全不同
Bootstrap 4 没有 g-* 系列类,也不支持 gap。它的“间距”完全靠 row 的负 margin + col 的 padding 实现。此时只需:
<div class="row no-gutters"> <div class="col">内容</div> <div class="col">内容</div> </div>
-
no-gutters是 BS4 唯一内置方案,它同时设margin: 0和所有col的padding: 0 - 别在 BS4 里用
g-0,它不存在,也不会生效 - 升级到 BS5 后,
no-gutters已废弃,必须换用gx-0 mx-0 px-0组合
用 CSS 覆盖时容易漏掉的点
手动写 CSS 覆盖时,常见错误是只清了 gap 或只清 padding,结果还是留缝。真正要连写三处:
.tight-row {
margin-right: 0 !important;
margin-left: 0 !important;
gap: 0 !important;
}
.tight-row > * {
padding-right: 0 !important;
padding-left: 0 !important;
}- 必须用
!important,因为 Bootstrap 的 padding/margin 是在col上直接写的,优先级高 -
gap属于row自身样式,不能靠子元素覆盖 - 别忘了响应式场景:如果只在
md断点去间距,要用gx-md-0 mx-md-0 px-md-0,而不是全屏一刀切
实际项目里,列之间是否需要呼吸感,比“怎么去掉”更重要——有时候留 2px 更利于视觉节奏,硬清到 0 反而显得挤。


















