cellspacing控制单元格边框间的空白,非表格外边距;仅在border-collapse: separate时生效,设为collapse则失效,现代应改用border-spacing替代。

cellspacing 不是用来调表格外边距的,它只控制单元格之间的缝隙——也就是 <td> 和 <code><th> 边框之间的空白,跟表格自身离周围元素的距离完全无关。
<h3>为什么给 <code>table 加 cellspacing 没反应?
最常见的原因是:你或项目里某个 CSS 重置了 border-collapse。
-
cellspacing只在border-collapse: separate(默认值)下生效;一旦写了table { border-collapse: collapse; },cellspacing就被彻底忽略 - 检查 DevTools 的 computed 样式,确认
border-collapse真的是separate - Bootstrap、Tailwind 或某些 reset.css 默认设为
collapse,这时cellspacing属性形同虚设 - 如果用了
display: block或display: grid改变了table的渲染上下文,cellspacing也无效
border-spacing 怎么用才对?
这是 cellspacing 的现代替代方案,但必须满足前提条件:
- 只能写在
<table> 元素上,不能加到 <code><tr> 或 <code><td> <li>仅当 <code>border-collapse: separate时起作用(不用显式写,因为这是默认值) - 支持单值和双值写法:
border-spacing: 8px(行列均为 8px),border-spacing: 6px 12px(横向 6px,纵向 12px)——注意顺序是「水平 垂直」,不是「行 列」 - 单位必须是长度值(
px、em、rem),不支持%或auto - 直接给
<table> 加 <code>margin:比如table { margin: 16px 0; } - 如果表格被包裹在
<div> 里,也可以控制那个容器的 <code>margin或padding - 注意:表格单元格(
td/th)不响应margin,别往里面乱加 - 避免用空格字符、
或无意义的<br>撑开距离,语义错误且难维护
想调表格和周围内容的距离,该用什么?
这才是真正的“表格外边距”问题,和 cellspacing 完全无关:
真正容易被忽略的是:哪怕你删掉了所有 cellspacing 和 cellpadding,只要全局 CSS 里有 table { border-collapse: collapse; },你就没法靠 border-spacing 控制单元格间距——这时候唯一办法是退回到 td, th { padding: ... } 来模拟“视觉间隙”。











