line-height 实现垂直居中仅适用于单行纯文本且容器高度固定的块级元素;它通过设置行框高度使文本基于基线对齐,多行、inline-block 子元素或 padding 均会导致失效。
line-height 实现文字垂直居中,只对**单行纯文本**有效。它本质是通过设置行框(line box)高度,让文本在该行框内基于基线(baseline)自动对齐,当 line-height 等于容器高度时,视觉上就“看起来居中”了。
常见误用场景:给多行文本、带 inline-block 子元素、或设置了 padding 的容器盲目设 line-height,结果错位或撑高容器。
div),且高度固定(height 或 min-height)inline 且无换行padding 并期望 line-height 抵消——它不处理内边距,只控制行框高度最常遇到的不是“写不对”,而是“用错了地方”。比如:
auto,line-height: 100px 只会让每行高 100px,但容器仍由内容撑开或换行符,变成多行,
line-height 对每行分别生效,整体不再居中vertical-align: top 或 middle,干扰了行框内部对齐逻辑transform: translateY() 微调line-height 是 CSS 2.1 的老办法,而 displ 和
ay: flexdisplay: grid 是现代布局方案。它们的根本差异在于:
line-height 依赖文本渲染机制,不改变文档流,也不作用于子元素布局flex 中 align-items: center 居中的是整个子元素(包括图片、按钮等),与行数无关grid 中 place-items: center 同样适用于任意类型子项,且支持多轴独立控制line-height 在缩放或动态字号下容易失准,flex/grid 更鲁棒如果确认是单行文本、固定高容器,以下写法最稳妥:
div.text-center {
height: 40px;
line-height: 40px;
font-size: 14px;
text-align: center;
}
注意两点:
em 或 rem 单位设 line-height(除非你明确知道父元素字号),优先用 px 或无单位数值(如 line-height: 2.5),避免嵌套计算偏差flex 更可靠;真要保兼容性,可结合 @supports 回退真正难的不是写出居中代码,而是判断此刻该不该用 line-height——它只解决一个非常窄的问题,一旦内容结构稍有变化,就得推倒重来。