应直接用 CSS 的 padding 属性设置 td 和 th 元素内边距,而非过时的 cellpadding;推荐写法为 td, th { padding: 12px; },并配合 border-collapse: collapse 确保样式准确生效。

直接用 padding 设置 td 和 th,别碰 cellpadding
HTML5 中 cellpadding 已被标记为 obsolete(过时),它只能写在 <table> 上,全局生效、单位固定为 px、无法响应式、不能被 !important 覆盖。真正该操作的对象是 td 和 th 元素本身。
最简实践:
给所有单元格统一加内边距,写一条 CSS 规则就行:
td, th { padding: 12px; }
这不是“可选方案”,而是当前唯一符合标准且可控的做法。
padding 值怎么写才不踩坑
常见错误是只写一个值,或没考虑方向顺序,导致上下左右全乱套。记住 padding 的四值语法顺序:上 → 右 → 下 → 左。
立即学习“前端免费学习笔记(深入)”;
-
padding: 8px 16px;→ 上下 8px,左右 16px -
padding: 6px 12px 10px 20px;→ 上 6px、右 12px、下 10px、左 20px - 单独设某一边:
padding-left: 15px;或padding-top: 4px; - 避免写成
padding: 10px 0;后发现文字贴顶——那是vertical-align默认 baseline 导致的,不是 padding 没生效
为什么加了 padding 表格却“变胖”了?
根本原因常出在 border-collapse 和 box-sizing 的组合行为上:
- 默认
border-collapse: separate时,padding+border-spacing会叠加,视觉间距翻倍 - 正确做法:先设
table { border-collapse: collapse; },再调padding,这样边框合并,padding 才是唯一控制项 - 如果用了
border,又没设box-sizing: border-box,padding 会额外撑开宽度——但表格元素默认无视box-sizing,所以别在这儿折腾,老老实实配border-collapse: collapse - 打印预览错位?多半是浏览器对
padding在分页时处理异常,加@media print { td, th { padding: 6px; } }单独收口
某些场景必须用内联样式
不是所有环境都支持外部或内部 CSS —— 最典型的是邮件模板。Outlook(尤其是旧版)会忽略 <style> 块里的 td 样式,必须写成:
<td style="padding: 10px 16px;">内容</td>
其他要注意的硬限制:
- rem 单位在移动端缩放时会随根字体变化,若需绝对稳定,得锁定
html { font-size: 16px; } - 用
class区分表头和数据行时,别漏掉th:th { padding: 10px 12px 8px; }和td { padding: 6px 12px; }是常见组合 - 千万别给
<table>设padding—— 它对表格容器无效,纯属白写
border-collapse 状态和 computed styles 里的真实值。动手前打开开发者工具看一眼 actual padding,比猜快十倍。



















