必须重编译Sass才能修改$grid-columns:先在导入bootstrap.scss前定义$grid-columns(如24),再同步调整$grid-gutter-width和$container-max-widths,否则响应式类不生效且布局异常。

修改 $grid-columns 变量前必须重编译 Sass
直接在 CSS 文件里改没用,Bootstrap 5 的网格列数是编译时确定的。你得从源码的 Sass 层入手,改完再走 dart-sass 编译流程。如果你只引入了官方 CDN 的 CSS,那这一步根本不可行——得自己搭构建链路。
常见错误现象:npm run build 后样式没变、col-3 类名不生效、浏览器里查不到新生成的类(比如 col-24)。
- 确保你使用的是 Bootstrap 源码中的
scss/bootstrap.scss入口,而不是已编译的bootstrap.css - 在导入
bootstrap.scss前,先定义$grid-columns: 24;(或其他你需要的数值) - 不要在
bootstrap.scss内部改变量——它被设计为“只读导入”,覆盖必须在外部提前注入
自定义列数后,所有响应式断点类都会自动扩展
改了 $grid-columns,不只是新增 col-24,而是整套响应式类都按比例生成:比如 col-sm-6 表示占 6/24 = 25%,col-md-12 就是 50%。这个逻辑由 scss/mixins/_grid.scss 里的 make-col mixin 驱动,它会遍历 1 到 $grid-columns 生成全部类名。
注意性能影响:设成 48 列?那光是 col- 类就会多出一倍,CSS 体积明显上涨,尤其对移动端首屏加载有实际感知。
-
$grid-columns: 12→ 生成 12 个col-1到col-12 -
$grid-columns: 24→ 生成 24 个,且每个断点(sm/md/lg…)再乘以 5,共约 120 个类 - 如果只用部分列宽(比如只用 4/8/12),建议配合
$enable-grid-classes: false关闭默认类,再手写需要的@include make-col(8)
与 $grid-gutter-width 和 $container-max-widths 的联动关系
改列数本身不改变 gutter 宽度或容器最大宽度,但它们共同决定实际布局效果。比如你设了 $grid-columns: 24 却没调大 $container-max-widths,结果就是每列被严重压缩,文字换行异常;反之,gutter 还是 1.5rem,24 列下总间隙变成 23 × 1.5rem ≈ 34.5rem,可能撑爆容器。
容易踩的坑:只改 $grid-columns,忘了同步评估 $grid-gutter-width 是否要等比缩小(如除以 2),以及 $container-max-widths 是否需提升(尤其是 xl 和 xxl 断点)。
-
$grid-gutter-width: 0.75rem更适合高列数场景(如 24 列),避免间隙喧宾夺主 -
$container-max-widths: (sm: 540px, md: 720px, lg: 960px, xl: 1140px, xxl: 1320px)建议按比例上调,例如xxl: 1920px - 这些变量必须在
bootstrap.scss导入前统一定义,顺序不能错:列数 → gutter → 容器宽度 → 导入
JavaScript 组件(如 Offcanvas、Modal)一般不受影响
Grid 列数变更只作用于 CSS 类,不影响 Bootstrap 的 JS 行为。像 Offcanvas 的宽度计算、Modal 的居中逻辑,都基于 CSS transform 或 flex,不读取 $grid-columns。但如果你在 JS 里手动写了 element.classList.add('col-3'),而该类不存在(因为没编译进 CSS),那就真会失效。
真正要注意的是第三方组件库或自定义工具类——比如有人封装了 col-span-2 并依赖 $grid-columns 计算 width,这种就得同步检查其 Sass 实现。
- Bootstrap 自带 JS 不解析网格类名,放心用
- 检查项目里是否有类似
@each $breakpoint in map-keys($grid-breakpoints)的自定义循环,它们可能隐式依赖$grid-columns - 用
grep -r "col-[0-9]" src/快速扫一遍业务代码,确认是否硬编码了旧列数
实际改动就几行,但变量生效路径、配套调整、体积代价,这些地方稍不注意,上线后就只能靠 DevTools 一行行排查。











