RFS响应式字号需在Sass中启用$enable-responsive-font-sizes: true并用font-size()包裹基准值,调整$rfs-breakpoint等参数可控制缩放区间与下限。
用 $enable-responsive-font-sizes: true 开启 RFS 响应式字号
rfs(responsive font sizes)是 bootstrap 4.3+ 内置的响应式字体缩放系统,不是靠一堆媒体查询硬写,而是通过 sass 函数自动计算。你必须在自定义 sass 文件(如 _custom.scss)里提前开启它,否则 font-size() 函数不生效:
- 确保在
@import "bootstrap"之前设置:$enable-responsive-font-sizes: true; - 不要在 CSS 文件里写,RFS 是 Sass 层能力,纯 CSS 引入 bootstrap.min.css 的项目无法使用
- 如果你用的是 Ruby on Rails +
bootstrapgem,需确认 gem 版本 ≥ 4.3.1,且已启用 Sass 编译流程(即用.scss而非.css引入)
用 font-size() 替代固定 font-size 值
开启 RFS 后,所有需要响应式缩放的字号,都得改用 font-size() 函数包裹原始值,比如你想让标题在大屏显示 20px、小屏最小缩到 16px,就写:
h1 { font-size: font-size(20px); }
这个 20px 是“基准最大字号”,不是“设计稿字号”——RFS 会以它为上限,按视口宽度线性缩小(默认下限约 1rem ≈ 16px),缩放逻辑由内置断点和系数控制,你不用手动算比例。
- 别传
16px当参数:那会导致所有尺寸都缩得更小,失去“大屏更大”的意图 - 别混用单位:
font-size(1.25rem)可以,但font-size(20)(缺单位)会报错 - 它只作用于直接声明的
font-size,不影响line-height或margin,后者需单独处理
表格、组件内文字怎么同步缩放?
Bootstrap Table、Alert、Card 等组件默认不走 RFS,因为它们的字体变量(如 $table-font-size)没被 font-size() 包裹。想让表格文字也响应式,得重定义变量:
$table-font-size: font-size(16px);
再 @import "bootstrap",这样整个 .table 就继承响应式行为。同理适用于 $h1-font-size、$lead-font-size 等。
- 别只覆盖选择器:写
.table { font-size: font-size(16px); }会因 CSS 优先级被框架样式覆盖 - 组件类名如
.display-1已内置 RFS,无需改动;但.h1类没包,仍需手动干预 - 第三方插件(如 select2、daterangepicker)字体不受影响,得单独加
font-size()或用全局html缩放
为什么写了 font-size(20px) 却没变小?
最常见原因是视口太宽或太窄超出了 RFS 默认范围。RFS 默认只在 1200px 到 ∞ 之间缩放,小于 1200px 就锁死在最小值(约 1rem)。你可以调小响应阈值:
$rfs-breakpoint: 768px; // 从 1200px 提前开始缩放<br>$rfs-minimum-font-size: 14px; // 把下限从 16px 改成 14px
这些变量必须在 $enable-responsive-font-sizes: true 之后、@import 之前设置。
- 浏览器 DevTools 里看计算后字体,如果显示
16px且没变化,大概率是没触发缩放区间 - RFS 不支持 IE,也不兼容部分旧版移动端 WebView,上线前务必真机测
- 缩放是平滑连续的,不是阶梯式跳变,所以别指望它和你手写的媒体查询像素级对齐
$rfs-factor 和 $rfs-include-rem-unit 这些底层参数,但绝大多数场景,设对 $rfs-breakpoint 和基准值就够了。


















