为什么在CSS中line-height应该是无单位的?

我经常听说line-height应该始终是无单位的。在我早期的编码年代,我没有太多质疑,但最近我开始思考为什么要这样。在我看来,1.51.5em应该产生相同的结果,对吗?事实证明,它们并不相同。

这两者之间有一个微妙的区别,这与line-height是一个继承属性有关。无单位的值将按原样继承,这意味着实际值将针对每个元素重新计算,考虑到元素的font-size。然而,带有任何单位的line-height将被计算一次,然后作为固定值继承。这可能会导致完全不同的结果,特别是如果声明在body元素或类似的元素中。

说到body元素,将基础的line-height定义为无单位的值可能是一个好主意,以减少重复:

body {
  line-height: 1.5;
}

那么,带单位的line-height是被禁止的吗?我们是否应该始终使用无单位的值?不一定。代码库约定、设计系统和个人偏好等因素在这里起作用。例如,使用无单位的line-height值来保持精确的垂直韵律可能有些棘手。在这种情况下,使用带单位的line-height可能是一个好主意,但记得要保持一致以避免麻烦。