重定义 $grid-breakpoints 必须先导入 functions,再声明变量,最后导入 variables 和 bootstrap;同时需同步更新 $container-max-widths,新增断点须三处配齐且满足命名与版本要求,CDN 用户无法动态修改。

$grid-breakpoints 必须重定义并重新编译,否则所有自定义断点类(如 col-xxl-6、d-2xl-none)根本不会生成——不是失效,是压根不存在。
重定义 $grid-breakpoints 必须严格按顺序导入
Sass 编译器只认第一次声明的值,后写覆盖无效。常见错误是把变量定义放在 @import "bootstrap/scss/variables" 之后,结果白改。
- 先
@import "bootstrap/scss/functions"(否则map-get等函数不可用) - 紧接着直接写
$grid-breakpoints: ( xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1440px ); - 再
@import "bootstrap/scss/variables" - 最后
@import "bootstrap/scss/bootstrap"
漏掉 functions 或顺序错位,Sass 会静默回退到默认值,控制台不报错,但编译出的 CSS 仍是原始断点。
$container-max-widths 不同步就会“卡住”容器宽度
改了 lg 断点为 1024px,但 $container-max-widths 里 lg 还是 960px?那在 1024–1199px 视口下,.container 死卡在 960px,左右大片留白。
-
$container-max-widths的 key 必须和$grid-breakpoints完全一致(大小写、引号、连字符都需逐字匹配) -
xs不需要出现在$container-max-widths中(它对应max-width: 100%) - 值应略小于下一个断点,例如
lg: 1024px对应lg: 992px,避免视口变化时跳变
新增断点(如 "2xl")后,col-2xl-6 还是没效果?
新增键名必须满足两个硬性条件,缺一不可:
- 键名是合法 CSS 类前缀:小写字母、数字、短横线,不能带空格或引号包裹(除非含短横线,如
"2xl"需加引号,但xxl可不加) - Bootstrap 版本 ≥ 5.2 才支持非标准键名(
5.1.x会忽略"2xl")
同时,以下三处必须全部配齐:
-
$grid-breakpoints中定义"2xl": 1600px -
$container-max-widths中补上"2xl": 1560px - 若用 BootstrapVue,
BVConfigPlugin的breakpoints数组里也得加上"2xl",否则<b-col "2xl"="6">解析失败,控制台报Unknown breakpoint '2xl'
用 CDN 或预编译 CSS 就别试了
bootstrap.min.css 是静态产物,所有媒体查询和类名都在构建时固化。你在 HTML 里写 col-xl-6,它永远绑定 @media (min-width: 1200px);你手写 @media (min-width: 1440px),也影响不了任何 Bootstrap 工具类的触发逻辑。
- CDN 用户唯一可行路径:用
d-none d-lg-block d-2xl-none组合模拟区间控制,或完全放弃工具类,手写媒体查询 + 自定义类 - 想让
navbar-expand-lg在1024px折叠?还得额外覆盖$navbar-breakpoint: lg,否则它仍按旧lg值(992px)判断
最常被忽略的点:改断点不是改一个变量的事,是牵一发动全身。漏掉 $container-max-widths,容器就卡住;漏掉 BootstrapVue 的 breakpoints 配置,Vue 组件就认不出新断点名;顺序错一步,整个重定义就等于没写。


















