跳到主要内容

line-height 三种赋值方式有何区别?(带单位、纯数字、百分比)

面试速答(30 秒版 TL;DR)

  • line-height 三种常见写法:
    • 带单位长度line-height: 24px
    • 纯数字(无单位)line-height: 1.5(推荐)
    • 百分比line-height: 150%
  • 最大差异点在“继承”:
    • 纯数字会把“倍数”继承下去,子元素按自己的 font-size 重新计算,更符合预期。
    • 带单位/百分比通常会先算成“具体长度”再继承,子元素字号变了也可能继承到同一个行高长度,导致看起来过松/过紧。

三种写法的行为对比(面试最该讲清的一张表)

写法例子本质含义继承时的常见效果
长度24px固定行高长度子元素可能继承到相同长度,字号变小会显得行距很大
纯数字1.5倍数(相对当前元素 font-size子元素继承倍数,按子元素字号重新算,更自然
百分比150%相对当前元素 font-size 的百分比通常也会先算成长度再继承,效果接近“长度”

直观看差异的例子(面试可直接讲)

<div class="p1">
父元素
<span class="c">子元素</span>
</div>
<div class="p2">
父元素
<span class="c">子元素</span>
</div>
.p1 {
font-size: 20px;
line-height: 1.5; /* 推荐:倍数 */
}

.p2 {
font-size: 20px;
line-height: 30px; /* 固定长度 */
}

.c {
font-size: 12px;
}

解释:

  • .p1 下,子元素继承到 1.5,子元素行高约为 12 * 1.5 = 18px
  • .p2 下,子元素可能继承到 30px,对子元素来说行距就显得特别大。

典型题 & 标准答法

Q1:为什么团队里更推荐 line-height: 1.5 这种无单位写法?

:因为它继承的是倍数,子元素字号变化时行高能按自身字号自动缩放,避免“子元素字号变小但行距仍然很大”的问题。

Q2:百分比和纯数字的区别是什么?

:两者都与 font-size 相关,但纯数字继承的是“倍数”;百分比在计算后更像“具体长度”再继承,因此对子元素字号变化的适配不如纯数字自然。


易错点/坑

  • line-height 做垂直居中:只适合单行文本,多行会翻车(见:垂直居中的方法)。
  • line-height 太小:可能导致上下行重叠或文字被裁剪(尤其 overflow: hidden 时)。

速记要点(可背诵)

  • line-height:长度/百分比容易继承成固定长度;无单位数字继承倍数更推荐。