line-height控制单元格内文字行高需作用于或,推荐用无单位值(如1.4)适配字体大小,固定高度时可设line-height等于height实现单行垂直居中,但多行会撑开;避免在或上设置,且需注意与padding、margin的协同关系。

直接用 line-height 控制单元格内文字行高
单元格内文字行距过密或过松,本质是文本行高(line-height)没适配字体大小和单元格高度。它和 padding 不同:后者控制内容到边框的距离,前者控制行与行之间的垂直空间。
常见错误是给 <td> 设 <code>height 后发现文字“贴顶”或“下沉”,其实是 line-height 太小或太大导致基线对齐异常。
-
line-height推荐用无单位数值(如1.4),它会随font-size自动缩放,避免响应式下错位 - 若单元格有固定高度(比如
height: 40px),可设line-height: 40px实现单行垂直居中——但仅限单行,多行会撑开 - 不要在
<tr> 或 <code><table> 上设 <code>line-height,它不继承或生效;必须作用于<td>、<code><th> 或其内部文本容器(如 <code><p></p>、<span></span>) - 如果单元格里嵌了
<p></p>,记得重置它的默认margin,否则line-height被外边距干扰,视觉间距不可控 - 优先级顺序:文字垂直位置由
line-height+vertical-align决定,padding只是外围缓冲区 - 当
line-height小于字体实际行高(如font-size: 16px但line-height: 12px),文字可能重叠或裁切,需实测 - 若用
em或rem设padding,而line-height用无单位值,两者缩放逻辑一致,配合更稳;混用px和em易导致比例失衡 - 最干净做法:给单元格内所有块级元素写
* { margin: 0; },再单独为需要间距的元素设margin-bottom - 更推荐用类封装,例如
.cell-content > * { margin: 0; },然后.cell-content p { margin-bottom: 4px; } - 避免用
<br>或空<div> 模拟行距——语义错误、难以维护、响应式下易崩<li>如果必须保留 <code>border-collapse: collapse且需视觉隔离,可用border-bottom: 1px solid #eee替代行间距,更可控 - 检查 computed styles 中
line-height的来源,确认是否被继承值、浏览器默认值或 !important 规则覆盖 - 若单元格含图标+文字混合布局,
line-height只对纯文本行有效;图标需用vertical-align: middle对齐,否则视觉错位 - 某些 UI 库(如 Bootstrap Table)会给
<td> 加 <code>vertical-align: middle,这会改变文本基线,间接影响line-height呈现效果微调的关键不在“加多少”,而在分清
padding、line-height、margin各自管哪一段距离——漏掉任一层,都会让调整变成盲调。
padding 和 line-height 混用时的视觉冲突
两者都影响“文字离边框多远”,但作用层不同:padding 是单元格盒子的内边距,line-height 是文本行盒的高度。叠加时容易误判谁在起作用。
典型现象:调大 padding 后觉得行距变宽了,其实只是上下留白多了;真正要压缩多行文字密度,必须调低 line-height,而不是一味减 padding。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
表格用了 border-collapse: collapse 还想微调行内间隙?
这时 border-spacing 失效,margin 对 <td> 无效,唯一可靠路径是精准控制内容本身。<p>比如单元格里塞了 <code><h3></h3> + <p></p>,浏览器默认会给它们加 margin-top/margin-bottom,看起来像“行距变大”,其实是段落外边距在作祟。
为什么 DevTools 里看到 line-height 计算值却没效果?
不是属性没生效,而是被更高优先级样式覆盖,或父级设置了 font-size: 0 导致子元素 line-height 失效(因为无单位值乘以 0 = 0)。
另一个高频原因是:单元格内容被 display: flex 或 display: grid 包裹,此时 line-height 对齐行为失效,改用 align-items 或 justify-content 控制。










