cellspacing 和 cellpadding 已过时,应改用 css:border-collapse 与 border-spacing 替代 cellspacing,padding 替代 cellpadding,以获得更高可控性、兼容性和维护性。

cellspacing 和 cellpadding 这两个属性**还能用,但不该用**——现代项目里硬写它们,大概率被 CSS 覆盖、在某些浏览器里失效、后续改样式时束手无策。
为什么 cellspacing 有时设了没反应?
最常见原因是:border-collapse: collapse 已被全局样式(比如 reset.css、Bootstrap 或自定义基础样式)启用。一旦表格处于 collapse 模式,cellspacing 就彻底失效——它只在 border-collapse: separate 下起作用。
- 检查 DevTools 中
<table> 元素的 computed 样式,看 <code>border-collapse是不是collapse -
cellspacing="0"在separate模式下也未必真“无缝”,常残留 1px 缝隙;必须配border-spacing: 0才可靠 - 它只能设单值(如
cellspacing="6"),无法实现横向 8px、纵向 4px 这种差异化控制 - HTML5 规范已将其标记为 obsolete(过时),不是 deprecated(弃用),意味着解析器仍支持,但不鼓励使用
- 打开 DevTools → 选中某个
<td> → 查看 <code>padding是否被其他样式(尤其是框架或 reset)重置为0或其他值 -
cellpadding="0"在 Chrome/Firefox 中可能“看起来”生效,但只要写了td { padding: 4px; },它就完全失效 - 它无法区分
<th> 和 <code><td>:表头通常需要更大内边距,而 <code>cellpadding对两者一视同仁 - 响应式场景下毫无办法——你没法写
@media (max-width: 768px) { table { cellpadding: 2 } } -
border-spacing: 8px 4px支持两个参数:第一个是水平间距,第二个是垂直间距 -
padding可单独写th { padding: 12px 8px; }或td:first-child { padding-left: 20px; },灵活度远超cellpadding - 如果想“无缝”表格,直接用
border-collapse: collapse+ 统一边框,此时border-spacing不生效,也不需要它
cellpadding 看起来没生效?先查 CSS 覆盖
cellpadding 是作用在 <table> 上的整表统一内边距,但它会被任何更具体的 <code>td, th { padding: ... } 直接覆盖——CSS 优先级永远高于 HTML 属性。
用 CSS 替代的三行实操写法(推荐)
把原来写在 <table cellspacing="8" cellpadding="6"> 的逻辑,换成这三行 CSS:
<pre class="brush:php;toolbar:false;">table {
border-collapse: separate;
border-spacing: 8px;
}
td, th {
padding: 6px;
}</pre>
<ul>
<li>
<code>border-spacing 必须配合 border-collapse: separate(默认值),否则无效
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











