padding-block 在表格单元格(td/th)中无效,因其 display: table-cell 不支持逻辑属性;应使用 padding-top 和 padding-bottom 等物理属性确保垂直内边距稳定生效。

padding-block 在表格单元格里基本没用,别白费劲。
为什么 padding-block 对 td 和 th 不起作用
因为 padding-block 是逻辑属性,依赖元素的 writing-mode 和 direction 才能映射到物理方向(比如上下)。而 td 和 th 的默认 display 是 table-cell,它不响应 padding-block —— 浏览器直接忽略该声明,连计算都不算。
你打开开发者工具看 computed styles,会发现 padding-block-start 和 padding-block-end 值是 0px,哪怕你写了 padding-block: 12px。
- 只有
display: block、inline-block、flex、grid等现代 display 类型才真正支持逻辑 padding -
table-cell属于遗留布局模型,只认padding-top/padding-bottom这类物理属性 - 即使你强行给
td加display: block,表格结构就崩了——tr不再约束行高,colgroup失效,对齐全乱
真正有效的垂直内边距写法:老老实实用 padding-top 和 padding-bottom
想让文字离上下边框有“呼吸感”,直接设物理方向值,稳定、兼容、可控。
- 统一写:
td, th { padding-top: 8px; padding-bottom: 8px; } - 如果要区分表头和数据,
th可略大些,比如padding-top: 10px; padding-bottom: 10px; - 千万别只设
padding: 8px 12px然后指望垂直方向自动生效——它确实会设上下,但语义模糊,不易维护 - 配合
vertical-align: middle一起用,否则 padding 加了但文字还是贴顶或沉底
想用逻辑属性?先换容器模型
如果你真想用 padding-block,说明你已经在考虑更现代的布局方式。那不如跳出 table:
- 用
display: grid模拟表格结构,每个单元格是div,这时padding-block完全可用 - 用
display: flex+flex-direction: column做单列数据卡片,padding-block表现正常 - 但注意:这些方案不再具备原生
table的语义可访问性(screen reader 识别表头/行列关系)和自动列宽对齐能力
表格的“呼吸感”本质是内容与边框之间的留白控制,不是语法炫技。老式写法反而最稳——padding-top 和 padding-bottom 写死,比猜逻辑属性是否生效靠谱得多。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











