<p>应使用 gx-/gy- 工具类调整栅格间距,而非直接覆盖 .row 的 margin;手动重置 margin 会破坏与 .col padding 的协同机制,导致偏移和裁切;嵌套时用 mx-n* 修正对齐;全局调整需修改 Sass 变量并重新编译。</p>

直接覆盖 .row 的 margin 会破坏栅格对齐
这不是配置错误,而是机制断裂。Bootstrap 5+ 的 .row 默认带 margin-left: -0.75rem 和 margin-right: -0.75rem,目的不是“加空白”,而是精确抵消子元素 .col 的 padding-left: 0.75rem 和 padding-right: 0.75rem。手动写 .row { margin: 0; } 或 mx-0,只清掉了负边距,却没动 .col 的 padding,结果就是整行向右偏移 0.75rem,右侧内容被裁切,甚至触发水平滚动条。
想改间距,必须用 gx- / gy- 工具类,而不是手调 margin
gx-3 这类类名不是“设置 margin”,而是同步重置整套 gutter 协同逻辑:
-
.row的margin-left和margin-right变为-1rem - 所有直系子
.col的padding-left和padding-right自动设为1rem - 响应式前缀如
gx-md-3仅在md及以上生效,断点间互不干扰
硬写 .row { margin-left: -1rem; } 不会触发 .col padding 变化,gutter 就失衡了。
嵌套 .row 时,mx-n* 是唯一安全的负 margin 用法
当 .row 出现在 .col 内部(即嵌套),外层 .col 的 padding-left: 0.75rem 和内层 .row 的 margin-left: -0.75rem 理论上应抵消,但盒模型计算常残留 1–2px 偏移。此时可加:
立即学习“前端免费学习笔记(深入)”;
- Bootstrap 5:给嵌套的
.row加mx-n3(即margin-inline-start: -1rem; margin-inline-end: -1rem) - Bootstrap 4:用
mx-n2(对应-0.5rem) - 别用
ml-n3 mr-n3——它不支持 RTL,且无法响应式控制
这个操作只修正嵌套层的视觉对齐,不干扰外层栅格逻辑。
全局改负 margin 基准值?别碰 CSS 变量,改 Sass 编译参数
--bs-spacer 控制的是正向间距(如 mb-3),而负 margin 档位(mt-n1 到 mt-n5)是 Sass 编译时静态生成的固定值,不参与运行时 calc()。你改 :root { --bs-spacer: 2rem; },mt-n3 还是 -1rem,不会自动变成 -2rem。
真要统一调整,必须在 Sass 层修改 $spacers 变量并重新编译 Bootstrap,否则只会造成工具类与自定义 CSS 行为不一致。


















