line-height 应设在包含文本的容器元素(如 p、div、td、body)上,优先用无单位数字(如 1.6),表格中需设在 td/th 上并配合 height、vertical-align 等控制高度。
直接用 line-height,别碰 height 或 HTML 旧属性(如 cellpadding)——这是最稳、最可控的方式。
写在**包含文本的容器元素**上,比如 p、div、td、body。它会自然继承给子级行内内容,不需要逐个设到 span 或 a 上。
body 是最省事的起点:body { line-height: 1.6; },正文段落基本不用再调h1 { line-height: 1.2; }
td 或 th 上,tr 的 height 属性在 Chrome 中基本无效,别依赖div 里,但里面是 display: flex 或 grid 布局,line-height 不起作用——它只对“形成行框”的文本流有效优先用**无单位数字**(如 1.5),除非你明确需要固定像素高度(比如后台数据表格单行锁定 40px)。
font-size 计算,响应式友好;子元素换字号,行高自动同比例缩放24px)不随字体变化,适合严格控高的场景,但移动端缩放或用户调整字号时易出错150%)看似等价,但继承的是计算后的绝对值,不是比例——嵌套多层后容易失控line-height: 1.5,子级又设 line-height: 20px,可能破坏垂直节奏核心矛盾是:浏览器对表格布局的渲染逻辑和普通块级元素不同,height 在 tr 上不可靠,line-height 又只管文字行距,不管图片或 padding。
立即学习“前端免费学习笔记(深入)”;
td 同时设 height: 40px + line-height: 40px + vertical-align: middle + box-sizing: border-box + padding: 0
height,改用 max-height: 80px + overflow: hidden + display: -webkit-box 截断,或直接用 flex 重写单元格结构border-collapse: collapse 必须加,否则 cellspacing 和 cellpadding 属性已废弃,且分离模式下边框叠加会让高度飘忽font-display: swap 和 min-height 预留空间常见原因不是语法错,而是被其他规则压制或盒模型干扰。
line-height 实际值,不是“Styles”里有没有写font-size: 0(常用于清除 inline 元素间隙),会导致无单位 line-height 计算结果为 0 —— 此时子元素必须显式设 font-size
display: inline-block 或 float 元素若没设 vertical-align,可能让行框高度异常拉伸transform: scale() 或 zoom 等缩放属性,会干扰行高渲染,尽量避免真正难的不是怎么写 line-height,而是判断它该不该生效——比如 flex 容器里的文字、absolute 定位的标签、或者被 font-size: 0 搞乱的上下文。这些地方写上也没用,得换思路。