表单字段间距必须由父容器统一承载,禁止在子控件上直接添加mb/me类;垂直表单用mb-控制字段单元间距,水平表单用gy-作用于.row控制label与控件间间隙;响应式需显式声明gy-0 gy-md-3 gy-lg-4完整断点链。

表单字段间距必须由父容器统一承载,不能分散到每个控件上
直接给 正确做法是只让字段容器(即每个 在 常见错误是用 Bootstrap 默认 spacing 类只支持 0–5(对应 0, 0.25rem, 0.5rem, 1rem…),无法直接表达 12px 这类像素值。硬凑 这种写法不依赖 Sass 编译,不污染全局,且能被 JS 动态修改。注意:IE11 不支持 CSS 变量,如需兼容,可加回退: 想实现“小屏字段紧凑(无垂直间隙)、中屏起拉开(0.75rem)、大屏进一步宽松(1rem)”,不能只写 必须显式写出完整断点链: 实际调间距时,最容易被忽略的是:gutter 类只作用于 .row,而表单字段容器( 或 加 mb-2、me-3 会导致间距累加和视觉错位——因为 和 默认行高、垂直对齐方式不同,强行套用相同 spacing 类会拉歪基线。更关键的是,如果父级 mb-2,实际就是 1rem + 0.5rem = 1.5rem,完全脱离设计预期。form-control(或对应类),不加任何 mt/mb/me 类。 和 都不设 margin/padding 工具类水平表单要用
gy- 控制 label 与控件的垂直对齐间隙form-horizontal 场景下,mb-* 不再适用——因为 label 和控件是同行排列,需要的是它们之间的上下留白,而非字段单元之间的垂直距离。此时应把 gy-2 加在包裹两者的 .row 上,它会通过 --bs-gutter-y 触发 .row 的负 margin-top/bottom 与 .col 的 padding-top/bottom 配对,确保 label 文字和 input 框在视觉上呼吸均匀。mt-2 给 label、mb-2 给 input,结果两者外边距叠加,且在缩放或打印时容易错行。gy-2 必须写在 .col 或 form-control 上无效gy-2 对应 --bs-gutter-y: 0.5rem,比 mb-2(0.5rem)数值一致但机制更稳定gy-1;宽松则用 gy-3,不要手动写 style="margin-top: 6px"
需要非标准值(如 12px)时,优先用内联 CSS 变量而非扩展工具类
mb-3(≈16px)或 mb-2(≈8px)会失准。最轻量可控的方式是绕过工具类,直接设置 CSS 变量:<div class="row" style="--bs-gutter-y: 12px">
<div class="col-sm-3"><label class="form-label">姓名</label></div>
<div class="col-sm-9"><input class="form-control"></div>
</div>
style="margin-top: 12px; margin-top: calc(var(--bs-gutter-y) * -0.5);"(配合 .row 负 margin 逻辑)。
mb-12 或 gy-12px —— 这些类不存在,浏览器忽略px-3 模拟垂直间隙,它只影响 padding,不修正 .row 的负 margin,易导致列偏移:root { --bs-gutter-y: 12px; }
响应式表单间距必须显式声明断点链,不能只写高断点类
gy-md-3 gy-lg-4。因为 Bootstrap 默认在所有断点都启用 gy-2(0.5rem),gy-md-3 只会让 ≥768px 生效,但 xs/sm 下仍沿用默认值。gy-0 gy-md-3 gy-lg-4。其中 gy-0 先清掉所有断点的默认垂直 gutter,后续类才真正生效。漏掉 gy-0,小屏下依然有 0.5rem 间隙,和设计稿不符。
gy-0 是响应式 gutter 的起点,不是可选项gy-md-3 gy-0 和 gy-0 gy-md-3 效果一致sm: 480px)需确认项目已启用对应类生成,否则 gy-sm-2 不会编译出 CSS 规则mb-3 包裹字段,又在外层套了个 gy-2 控制的是这个 .row 和它上下兄弟元素的间隙,和字段内部 label/input 对齐无关——这时候该动的其实是 gy- 所在的那层 .row,而不是字段容器本身。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











