cellspacing已废弃,应改用css的border-spacing配合border-collapse: separate;它仅在此模式下生效,支持单值(如12px)或双值(如8px 4px)设置,且无法单独控制行列间距。

cellspacing 属性确实能控制表格单元格之间的距离,但它在现代开发中基本失效——不是浏览器不认,而是它常被 CSS 覆盖、被重置样式压制、无法响应式、也不能单独控制行列。真要调边框间距,得用 border-spacing。
为什么写了 cellspacing="0" 还有缝隙?
常见现象:明明设了 cellspacing="0",但单元格之间仍有 1–2 像素空隙。原因不是属性没生效,而是:
- 父容器或
<table> 自身有默认 <code>font-size,而表格默认是inline-block行为,导致换行符/空白字符被渲染成间隙 - 全局 CSS 里写了
table { border-collapse: collapse; }—— 此时cellspacing完全被无视 - 某些框架(如 Bootstrap)默认启用
border-collapse: collapse,你写的cellspacing从一开始就被绕过 - 统一设置:
style="border-spacing: 12px;"→ 水平和垂直都是 12px - 分别设置:
style="border-spacing: 8px 4px;"→ 水平 8px,垂直 4px - 如果表格已继承了
border-collapse: collapse,必须显式重置:style="border-collapse: separate; border-spacing: 6px;" - IE8+ 全支持;IE7 及更早版本不支持,但这类环境现在几乎不存在
- 用
padding调整单元格内容与边框的距离(替代旧的cellpadding) - 对特定
<td> 或 <code><th> 单独设 <code>padding,比如<td style="padding-left: 20px;"> <li>若需“视觉上拉开某两列”,可给中间一列设 <code>border-right: 12px solid transparent;,比改border-spacing更可控 - 注意:
border-spacing只作用于单元格边框之间,不影响padding或外边距(margin)
border-spacing 怎么写才真正起作用?
这个 CSS 属性才是当前标准方案,但它有个硬性前提:必须配合 border-collapse: separate(这是默认值,但容易被覆盖)。
想精细控制某一行或某一列的间距怎么办?
cellspacing 和 border-spacing 都是整表统一控制,没法只给第 3 列加间距。真要差异化,得组合其他 CSS:
别把 cellspacing 当主力——它像一把固定尺寸的螺丝刀,拧得动,但没法调扭矩、换头型、也不防滑。真正要适配移动端、嵌套 Flex 布局、或者做设计系统级复用,border-spacing + padding + 显式 border-collapse 才是那套可校准的工具组。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











