最稳妥的标题字号调整方案是控制根字号(html 或 :root 的 font-size),使 h1~h6、.lead、small 等全部自动按比例缩放;其次可用 .h1~.h6 类实现局部语义替换;慎用直接重写 h1~h6 样式,需同步调整 line-height 和 margin;v5 可用 fs-* 工具类微调非标题场景字号。
直接改 h1 到 h6 的 font-size 是最常见做法,但容易破坏排版比例——比如行高、上下间距、small 副标题缩放都会脱节。真正稳妥的路径是控制根字号,或用 bootstrap 自带的响应式工具链。
改 html 或 :root 字体大小(全局缩放)
Bootstrap 4 使用 html { font-size: 16px; } 作为 rem 基准,所有标题尺寸(如 h1 { font-size: 2.5rem; })都基于它计算。改这里,h1~h6、.lead、small、line-height: 1.5 全部自动按比例放大/缩小,无需单独重写。
- 在自定义 CSS 最末尾加:
html { font-size: 18px; }(v4 推荐)或:root { font-size: 18px; }(v5 更标准) - 别在媒体查询里重复设
html { font-size },否则可能和 Bootstrap 响应式断点冲突 - JS 中读取
getComputedStyle(document.documentElement).fontSize会变,如果依赖该值做动态适配,得同步调整逻辑
用 .h1~.h6 类覆盖语义标签(局部替换)
.h1 类和 h1 标签样式完全一致(包括 margin-bottom: 0.5rem、line-height: 1.2),但它不强制语义,适合把普通 div 或 p 当标题用,又不想改 HTML 结构。
- 想让一个
p看起来像h3,但保留段落语义?用<p class="h3"></p>,不是<h3></h3> -
.h1~.h6不带响应式变体;如果需要「桌面端 h2、移动端 h3」,得手动加h2 h2-sm h3-md这类组合类,Bootstrap 本身没提供 - 注意:这些类不会影响父级
font-size继承,<div style="font-size: 20px"> <p class="h1"> 里 <code>h1尺寸仍按根字号算,不是 20px × 2.5单独重写
h1~h6样式(慎用)仅当必须打破默认比例时才选这条路,比如设计系统要求
h1固定为 48px、h2为 36px,且不希望其他元素(如small)跟着缩放。- 必须同步调
line-height和margin-bottom,否则文字发紧或间距失衡。例如:h1 { font-size: 48px; line-height: 1.3; margin-bottom: 1.2rem; } -
small默认是父元素字号的 80%,若h1改成 48px,h1 small就是 38.4px —— 如果这不符合预期,得额外加h1 small { font-size: 0.6em; } - Bootstrap 4 的
h1~h6默认font-weight: 500,别漏掉,否则看起来比设计稿轻
用
fs-*工具类快速微调(v5+,不适用于 v4)Bootstrap 5 新增了
fs-1~fs-6,只管font-size,不碰line-height或margin,适合按钮文字、表格内文案等“非标题场景”的字号微调。-
fs-4≈h4大小(1.5rem),fs-6≈small(0.875rem) - v4 没这组类,强行引入会增加维护成本;v5 项目里也别混用
fs-4和h4,语义和样式职责就乱了 - 它不响应式缩放,要适配移动端得配
fs-sm-5 fs-md-4,但这些类 v4 同样不存在
最常被忽略的是
small的继承行为——它永远按父元素当前font-size计算,不是按原始 Bootstrap 默认值。所以改了h1字号却忘了检查h1 small的实际像素值,副标题就可能比主标题还大。 - 必须同步调











