cellpadding控制单元格内容到边框的距离,只作用于td/th内部;cellspacing控制单元格间及与表格边框的间隙,作用于整个表格网格;二者均为table属性,现代开发应改用CSS的padding和border-spacing替代。

cellpadding 控制单元格内容到边框的距离
它只影响 <td> 或 <th> 内部:文字、图片等元素离单元格四条边有多远。数值越大,内容越“居中宽松”,但不会让单元格变大——只是内部留白增加。
常见错误是把它当成“单元格之间的距离”,结果调了 cellpadding 却发现相邻单元格还是紧贴着。它不改变表格结构,只管“盒子里面怎么放东西”。
-
cellpadding是<table>的属性,不能写在<td>上(浏览器会忽略) - 值可以是数字(如
cellpadding="8"),单位默认为像素,不写px - 设为
0时内容会紧贴边框,常用于紧凑型数据表格
cellspacing 控制单元格之间的间隙
它定义的是所有单元格彼此之间、以及最外层单元格和表格边框之间的空白宽度。这个值作用于整个表格的“网格骨架”,相当于给每个单元格加了一圈统一的“隔离带”。
容易踩的坑是误以为 cellspacing 能单独控制某两列之间的距离——它不支持差异化设置,所有间隙都一样宽;而且当 border-collapse: collapse 生效时,cellspacing 完全失效。
立即学习“前端免费学习笔记(深入)”;
-
cellspacing同样只能写在<table>标签上 - 设为
0时,单元格边框会完全贴合(前提是没用border-collapse: separate) - 如果表格有
border且未设border-collapse,cellspacing会让边框看起来更“粗”,其实是间隙被边框颜色填充了
为什么现代项目里基本不用这两个属性
因为它们能力太粗、控制太死:无法响应式适配、不能单独设置上下左右、不支持不同行/列差异化、与 CSS 盒模型逻辑割裂。真正替代方案是:
- 用
padding替代cellpadding(直接写在<td>或<th>的 style 或 class 里) - 用
border-spacing替代cellspacing(必须配合border-collapse: separate,写在<table>上) - 若想消除间隙,优先用
border-collapse: collapse,而不是把cellspacing设为 0
旧代码里还能见到它们,但新写的 HTML 表格,除非兼容极老环境,否则建议从一开始就不写 cellpadding 和 cellspacing。
调试时怎么快速区分两者效果
最直观的办法:给表格加显眼边框,再分别调整两个值观察变化。
例如:
<table border="1" cellpadding="10" cellspacing="5"> <tr><td>A</td><td>B</td></tr> <tr><td>C</td><td>D</td></tr> </table>
- 只增
cellpadding→ A/B/C/D 文字离各自边框变远,但 A 和 B 的边框依然挨得很近 - 只增
cellspacing→ A 和 B 之间、A 和 C 之间、整个表格边框和 A 之间,全部同步拉开 - 两者都设为 0 → 内容贴边 + 单元格无缝拼接(前提是没用
border-collapse: collapse)
实际项目中,哪怕只是临时调试,也建议立刻切到 CSS 方式——因为 cellpadding 和 cellspacing 的行为在不同浏览器渲染细节上仍有微小差异,而 padding 和 border-spacing 是标准盒模型,可控性高得多。



















