border-spacing 是唯一符合 HTML5 标准的单元格间距设置方式,需配合 border-collapse: separate 使用,仅作用于 table 元素,不支持负值,接受一或两个长度值(先横后竖),不可用 padding 替代。
border-spacing 是当前唯一可靠、语义正确且符合 HTML5 标准的设置单元格间距的方式。`cellspacing` 属性已废弃,不应再使用。border-spacing 不生效?最常见原因是表格的 border-collapse 被设为 collapse。该属性会强制合并边框,使单元格“贴在一起”,此时 border-spacing 完全被忽略。
border-collapse: separate(这是默认值,但常被重置)table { border-collapse: collapse; }
border-spacing 只作用于 <table> 元素,不能写在 <td> 或 <tr> 上px、em 等合法长度单位border-spacing 的参数怎么配?它接受一个或两个长度值:
border-spacing: 10px → 水平和垂直间距都是 10pxborder-spacing: 12px 4px → 水平 12px,垂直 4px(注意顺序:先横后竖)border-spacing: 4px 12px 并指望它“垂直优先”——CSS 规范明确约定第一个值是水平间距示例:
<table style="border-collapse: separate; border-spacing: 8px 2px;"> <tr><td>A</td><td>B</td></tr> <tr><td>C</td><td>D</td></tr></table>
padding 模拟单元格间距给 <td> 加 padding 看起来像有间距,但它改变的是内容到边框的距离,不是单元格之间的空隙。这会导致:
border-collapse: collapse 时,padding 会让边框“浮起来”)真正需要单元格之间留白,就只动 border-spacing,其他地方别碰。
立即学习“前端免费学习笔记(深入)”;
border-spacing 在所有现代浏览器中完全支持,包括 IE8+。但要注意:如果你的项目仍需支持旧版 IE(如 IE7),cellspacing 属性虽废弃,反而是当时唯一选择——不过 2026 年还保留在意 IE7 的场景,基本只存在于遗留系统维护中,而非新开发。
实际项目里最容易被忽略的一点:团队成员可能在不同文件里分别设置了 border-collapse 和 border-spacing,导致样式冲突。建议统一在基础表格类(如 .table-spaced)中封装这两个声明,避免零散覆盖。