line-height 应用无单位数值(如1.6)于p或body最稳妥,因其随字号动态缩放,避免px值在缩放、嵌套或多端场景下失效;需结合中文字体特性实测调整,不可盲目套用固定值。

正文行高别设固定像素值,直接用无单位数字(如 1.6)写在 p 或 body 上最稳。 其他写法要么失效,要么在字体缩放、多字号嵌套或移动端下出问题。
为什么 line-height: 1.6 比 line-height: 24px 更适合正文
中文正文常需适配不同设备和用户设置,line-height 的核心任务是保证每行文字有足够呼吸感,又不割裂段落节奏。用无单位数值才能让行高随字号实时响应:
-
line-height: 1.6是乘数:若p字号是16px,行高 =25.6px;里面嵌个<small></small>(字号12px),它的行高自动变成19.2px,比例一致 -
line-height: 24px是硬编码:无论子元素字号怎么变,行高永远卡死在24px,小字号时显松垮,大字号时压住 “g”“y” 下降部 - 用户开启系统大字体模式、浏览器强制缩放、或你用
rem动态调根字号时,px值完全失联,而1.6仍可靠
p 标签上设 line-height 就够了,别往 span 或 strong 上乱加
line-height 控制的是整行“行框(line box)”高度,不是单个内联元素的属性。写在 span、strong 上基本无效,还可能干扰继承:
- 正确做法:统一在
p、article或body上设,比如p { line-height: 1.6; } - 错误做法:
<p><span style="line-height: 1.8;">正文</span></p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/xiazai/skill8272" title="anything-to-html"><img src="https://img.php.cn/upload/skill/000/000/081/179195588450431.jpg" alt="anything-to-html" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/xiazai/skill8272" title="anything-to-html">anything-to-html</a> <p>将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。</p> </div> <a href="/xiazai/skill8272" title="anything-to-html" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> <p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>—— 不仅多余,还可能因父级line-height被覆盖而造成行框错位 - 例外场景:表格单元格必须设在
td或th上,tr的height在 Chrome 中基本不生效
中文正文推荐值不是“一刀切”,要结合字体和字号看真实行框
思源黑体、HarmonyOS Sans 等现代中文字体字身偏高,line-height: 1.5 可能已显紧;而宋体小字号下,1.4 又容易粘连。别只信数值,得用开发者工具验证:
- 小字号正文(
14px–16px):起步建议1.6~1.75,低于1.4易挤在一起 - 标题可收紧(
h1 { line-height: 1.25; }),但别用1.0,否则基线对齐会让文字贴顶 - 调试技巧:给
p加border: 1px solid red,打开开发者工具看“Computed”里的实际行框高度,而不是只盯着 CSS 面板写的值 - 最后一行文字被切掉?大概率是
line-height设太小(如1.1)+ 字号偏大,行框高度不足以容纳字形实际高度
真正容易被忽略的点是:line-height 不解决容器内垂直居中,也不替代 padding。它只管行内空间。调完之后,务必在不同字号、不同字体、不同缩放级别下实测——预设数值再合理,也抵不过浏览器里那一眼真实的行框。


















