文字“上浮”是因line-height撑开行框并基线对齐,与padding叠加导致错位;应设line-height等于height实现单行居中,或改用flex布局align-items:center彻底解决。

line-height 比 padding 大时文字“上浮”怎么办
当 line-height 设置得远大于元素实际高度(比如只有一行文本但 line-height: 2em),而同时设置了 padding,视觉上文字会明显偏上——这不是 bug,是 line-height 的基线对齐机制和 padding 共同作用的结果。浏览器把行框(line box)垂直居中撑开,再把文字按基线对齐到其中,padding 又从盒模型边界开始算,两者不协同就容易错位。
- 文字“飘在上面”常见于按钮、标签、输入框的内联样式
- 不要只调
padding-top硬顶,可能破坏上下对称或响应式表现 - 更稳妥的做法是让
line-height和height(或min-height)形成可预测关系:若希望单行居中,通常设line-height等于容器的height - 若必须保留大
line-height(如为了多行文本行距),就把padding改为padding-top/padding-bottom分开控制,留出空间给行框自然撑开
padding 和 line-height 同时存在时高度计算不准
CSS 盒模型中,padding 属于 content box 内部尺寸,line-height 影响的是行框高度(不属于盒模型直接属性),二者叠加后总高度 ≠ height + padding * 2,尤其在 display: inline 或 inline-block 元素上更难预料。
- 使用
box-sizing: border-box不能解决 line-height 引起的高度偏差,它只管 padding/border 是否计入 width/height - 对块级单行文本,推荐显式设置
height并令line-height与之相等,此时padding可自由增减,总高 =height + padding-top + padding-bottom - 对
display: flex容器,用align-items: center替代依赖line-height垂直居中,彻底绕过冲突










