修改 $line-height-base 无效需检查变量加载顺序:必须在 @import "bootstrap/scss/functions"; 后、@import "bootstrap/scss/variables"; 前重定义;预编译 CSS 中该变量无效,须用 CSS 覆盖,并注意组件硬编码、选择器权重及 line-height 与 padding/height 的耦合。
修改 $line-height-base 变量后不生效?检查是否覆盖了编译顺序
bootstrap 4/5 的行高默认由 sass 变量 $line-height-base 控制(值通常为 1.5),但直接改它不一定生效——关键看你的自定义变量是否在 bootstrap 源码 @import 之前载入。
- 必须在
@import "bootstrap/scss/functions";之后、@import "bootstrap/scss/variables";之前重定义$line-height-base - 如果用的是预编译 CSS(比如直接引入
bootstrap.min.css),改变量完全无效,只能靠 CSS 覆盖 - Bootstrap 5 中部分组件(如
.btn、.alert)硬编码了line-height,变量只影响基础排版类(如.lead、段落)
用 CSS 覆盖时,优先级不够?盯紧选择器权重和 specificity
想全局调低正文行高,写 body { line-height: 1.4; } 很可能被组件内联样式或更具体的选择器干掉,尤其遇到 .card .card-body p 这类嵌套规则。
- 最稳妥是加
!important:body { line-height: 1.4 !important; }(仅限小项目快速修复) - 更推荐提高 specificity:用
html body { line-height: 1.4; }或:root body { line-height: 1.4; } - 注意 Bootstrap 5 的
reboot.scss会给p、h1–h6单独设line-height,需单独覆盖,例如:p { line-height: 1.4; }
修改 line-height 影响按钮/输入框高度?别忽略垂直对齐逻辑
Bootstrap 的 .btn 和 .form-control 高度依赖 line-height + padding + font-size 组合。单纯调小 line-height 会导致文字贴顶、视觉挤压。
- 按钮高度 ≈
font-size × line-height + padding-top + padding-bottom;改line-height后,建议同步微调padding补偿 - 输入框(
.form-control)若用height固定值,line-height改变后文字会偏上,应改用min-height或移除height让其自适应 - 响应式场景下,
line-height建议用无单位数值(如1.4),避免在不同font-size下失衡
用 rem 或 em 设 line-height?慎用相对单位
line-height 用 em 或 rem 会触发继承计算,容易引发意外缩放,尤其嵌套多层组件时。
-
line-height: 1.4rem= 基于根元素字体大小的固定像素值,失去响应性,且与字体大小脱钩 -
line-height: 1.4em在子元素font-size变化时会层层相乘,比如父font-size: 16px; line-height: 1.5em→ 子font-size: 12px;时实际行高变成16 × 1.5 = 24px,再按子字号算就乱了 - 正确做法:始终用无单位数值(
1.4),它基于当前元素自身font-size计算,干净可控
line-height 和 padding/height 的耦合关系——动一个得看三个地方。


















