cellspacing="0" 无法可靠消除表格间隙,因其已被 html5 废弃,在标准模式下易被 css 重置覆盖;现代方案须配合 border-collapse: collapse 或 border-spacing: 0 并清除 padding 等干扰源。

直接设 cellspacing="0" 能解决大部分老式表格的间隙问题,但现代项目中它已被 CSS 取代,且在严格模式下可能失效——别只靠它,得配合 border-collapse 和 border-spacing 才真正可靠。
为什么 cellspacing="0" 有时不起作用
HTML5 不再推荐使用 cellspacing 属性,浏览器在标准模式下会忽略内联的 cellspacing(尤其是当存在 CSS 重置或框架样式时)。更关键的是:如果表格本身有 border 且未设置 border-collapse,即使 cellspacing="0",视觉上仍会出现“双线缝”。
-
cellspacing是 HTML 属性,仅对传统表格渲染生效;CSS 中对应的是border-spacing - 若页面引入了 Normalize.css 或 Bootstrap 等重置库,它们常默认设
border-spacing: 2px,会覆盖cellspacing -
border-collapse: separate(默认值)下,border-spacing才起效;collapse下该属性被忽略
border-collapse: collapse 是最稳妥的方案
这是清除单元格间“缝隙”的核心手段,尤其适合无边框或单线风格的表格。它让相邻边框合并为一条线,彻底消灭间隙感。
- 必须作用于
<table> 元素本身,不能只写在 <code><td> 上 <li>需同时确保 <code><th> 和 <code><td> 的 <code>border为none或统一设为1px solid transparent,否则残留边框仍会撑开空间 - 注意:设为
collapse后,border-spacing失效,所以无需再写border-spacing: 0
示例:
table {
border-collapse: collapse;
}
th, td {
border: none;
padding: 8px;
}
用 border-spacing: 0 替代 cellspacing 更现代
当你要保留 border-collapse: separate(比如需要独立圆角边框或 hover 隔行变色),就该用 CSS 的 border-spacing,它完全等价于旧式 cellspacing,但可控性更强。
- 支持单位:可设
0、0px、0em,但不要写0%(无效) - 可分别控制横向/纵向:如
border-spacing: 0 4px表示水平无间隙、垂直 4px 间距 - 它只影响
<table>,不影响 <code><div> 或其他元素,不会误伤布局 <p>注意:如果表格父容器有 <code>font-size: 0(常见于清除 inline-block 间隙),也可能导致border-spacing渲染异常,需单独重置font-size。容易被忽略的三个隐藏干扰源
即使
cellspacing="0"+border-collapse: collapse都写了,间隙仍存在?大概率是以下原因:<td> 或 <code><th> 自带 <code>padding—— 默认值通常为padding: 1px,清掉它:td, th { padding: 0; }- 表格外层包裹了
<div> 且该 <code><div> 有 <code>margin或line-height,造成“伪间隙” - 某些 UI 框架(如 Ant Design、Element Plus)的表格组件会注入伪元素
::before/::after绘制分隔线,需用table::before { display: none; }排查
真要快速验证,打开 DevTools → 选中
<table> → 查看 Computed 标签页里的 <code>border-spacing和border-collapse实际值,比猜更准。











