应使用 border-collapse: collapse 配合显式 border,因 cellspacing 是 HTML4 遗留属性,HTML5 已废弃,在严格模式下常被忽略;仅设 collapse 不够,需为 table 设置 border(如 1px solid transparent)并重置 padding、margin、font-size 等以消除假间隙。

直接用 border-collapse: collapse,配 border,别再依赖 cellspacing —— 它在现代 HTML 中行为不可靠,尤其在严格模式下可能被忽略。
为什么 cellspacing="0" 有时不起作用?
浏览器把 cellspacing 解释为「单元格外边距」,但它和 CSS 的 border、padding、box-sizing 会叠加冲突。尤其在 Safari/Firefox 中,即使写了 cellspacing="0",仍能看到白缝。
-
cellspacing是 HTML4 遗留属性,HTML5 已废弃,不推荐用于新项目 - 在
<!DOCTYPE html>下,部分浏览器会降级处理或完全忽略该属性 - 它无法与 Flex/Grid 布局中的表格容器协同工作
border-collapse: collapse 必须配 border
只写 border-collapse: collapse 不够 —— 它只是“合并相邻边框”,如果 <td> 或 <th> 没定义边框,合并后依然有透明缝隙(尤其背景色不同时)。
- 安全写法:
table { border-collapse: collapse; border: 1px solid transparent; } - 用
transparent比none更稳妥,border: none会破坏合并逻辑 - 若需显示边框,统一设
border: 1px solid #000,再配合collapse即可无缝
还有哪些地方会偷偷加空隙?
即使边框问题解决了,<td> 内部内容、父容器样式、字体渲染都可能制造“假间隙”。
立即学习“前端免费学习笔记(深入)”;
-
<td>默认有padding,需显式设padding: 0才真正贴边 - 父容器若设了
font-size: 0或含换行符的空格,会在表格底部/右侧产生微小间隙 - 单元格内嵌
<p>、<h3>等自带margin的元素,必须重置其外边距 - IE8+ 支持
border-collapse,但旧版 IE 可能需要额外 hack,不过现在基本可忽略
真正麻烦的不是边框合并本身,而是得一层层排查:从 table 到 tr、td、再到内部文本节点的 line-height 和 vertical-align —— 很多空隙根本不是表格属性造成的,而是渲染细节在作祟。



















