HTML5已废弃cellpadding和cellspacing,不应再使用;应改用CSS的padding(作用于td/th)控制内容与边框距离,border-spacing(作用于table且需border-collapse: separate)控制单元格间间隙。

cellpadding 和 cellspacing 还能用吗?
不能直接用了。HTML5 已废弃 cellpadding 和 cellspacing 属性,强行写在 <table> 上虽然浏览器可能兼容渲染,但会触发 HTML 验证警告,且语义不清、维护困难。
正确做法是用 CSS 控制:用 padding 调整单元格内容与边框的距离,用 border-spacing 控制相邻边框之间的间隙(即旧 cellspacing 的替代)。
-
padding作用于<td>或<th>,影响文字/内容到单元格边框的距离 -
border-spacing必须设在<table>上,且仅对border-collapse: separate生效(默认值) - 若用了
border-collapse: collapse,border-spacing会被忽略,此时单元格间无间隙,靠padding单独控制留白
怎么让文字离左边框远一点但不撑大整个列宽?
关键在于只给需要的方位加 padding,比如只加 padding-left,而不是全方向 padding。同时注意 box-sizing 默认是 content-box,padding 会额外增加宽度——如果列宽已用像素或百分比固定,容易溢出或换行。
- 推荐统一设置
box-sizing: border-box,让padding包含在设定的宽高内 - 对特定列调整:用类名如
.pl-12,定义padding-left: 12px - 避免直接写
style="padding-left: 16px"在每个<td>上,不利于复用和主题切换 - 示例:
td.align-left { padding-left: 16px; padding-right: 8px; }
合并边框(collapse)下还有办法微调间距吗?
没有 border-spacing,但仍有两个实用手段:一是用 padding 做内容级留白;二是用伪元素或透明边框“伪造”间隙。
立即学习“前端免费学习笔记(深入)”;
- 最常用的是
padding+border-box组合,安全可靠 - 若需在边框之间“挤”出 1px 空隙(比如深色背景上想让边线呼吸),可给
<td>加border: 1px solid transparent,再配合background-clip: padding-box防止背景侵入边框区 - 慎用
margin:表格单元格不支持margin,写了也无效 - 注意:
border-collapse: collapse下,相邻单元格的边框会合并,此时单侧border可能被覆盖,优先用padding
响应式表格里 padding 怎么不显得太挤?
固定 padding: 12px 在小屏上会让内容局促,尤其配合字体缩放时。必须用相对单位或媒体查询动态调整。
- 优先用
em或rem:如padding: 0.5em 0.75em,随字体大小自适应 - 小屏下减半:
@media (max-width: 480px) { td, th { padding: 0.35em 0.5em; } } - 避免在
<table>上设font-size后忘记重置td的padding单位,否则 em 会套娃放大 - 移动端慎用左右大 padding,可改用
text-align: center+ 垂直居中缓解拥挤感
border-collapse 的隐式状态和 box-sizing 的缺失——这两个不显眼的设置,往往让 padding 表现和预期完全相反。



















