table标签没有hspace和vspace属性,它们仅属于img标签且已废弃;表格整体外边距应使用margin,单元格间隙用border-spacing(需配合border-collapse:separate),内边距用padding。

table 标签根本没有 hspace 和 vspace 属性
这是最常被误解的一点:hspace 和 vspace 从来就不是 table 的合法属性。它们只属于 img 标签(且早已废弃)。如果你在 <table hspace="10"> 里写了,浏览器会直接忽略——连解析都不做,更谈不上“失效”。W3C 验证器会报错,DOM 中也查不到该属性。
真正需要替代的,是那些误以为能用在表格上的旧写法。比如:
-
<table align="center">→ 不是 hspace,但常被混为一谈;应改用margin: 0 auto -
<img src="x.png" hspace="15">→ 这才是hspace的原始使用场景,需用margin替代 -
<table cellspacing="5">→ 常被当成“表格左右留白”,实际控制的是单元格之间间隙,应换border-spacing
给表格整体加左右边距:用 margin,但必须配 width
想让整个表格在页面中左右留空,等效于旧式“视觉居中+边距”效果,唯一可靠方式是 CSS margin:
-
margin: 0 20px表示上下 0、左右各 20px,适用于固定宽度或 max-width 受限的表格 -
margin: 0 auto实现水平居中,但 必须同时设置width(如width: 90%或width: 800px),否则auto不生效 - 避免只写
margin-left或margin-right单侧值——图文混排时易导致浮动错位或父容器溢出 - 如果表格嵌套在
<p>或<div>内,注意外边距塌陷:<p>的margin-bottom和表格的margin-top会合并,实际间距取较大值
表格内部“看起来像左右留白”的真实来源
很多人想调“表格左右留白”,实际要解决的却是内部渲染问题:
立即学习“前端免费学习笔记(深入)”;
- 单元格默认有
padding(通常 8–10px),它造成内容离边框的距离,不是margin能控制的,得写td, th { padding: 0 12px; } - 表格外层容器(比如
<div class="wrapper">)可能自带margin或padding,被误认为是表格本身的边距 - 若表格设了
background-color但没设border-collapse: collapse,相邻单元格边框间缝隙会透出背景色,像“额外留白” -
font-size: 0缺失或换行符残留,会在<table>后产生 1–2px 微小间隙,需配合font-size: 0和vertical-align: top清除
别碰 cellspacing / cellpadding,改用 border-spacing + padding
如果目标其实是“让表格列与列之间变窄/变宽”,那根本不是 hspace 的事,而是 cellspacing 的遗留需求:
-
cellspacing已废弃,唯一标准替代是border-spacing,但它只在border-collapse: separate下生效 - 写法必须是
border-spacing: 4px 0(水平 4px,垂直 0),不能用逗号,单位必须是 px/em/rem(避免 IE 兼容问题) - 若用了
border-collapse: collapse,border-spacing完全无效——此时“无间隙”是默认行为,无需额外设置 -
cellpadding对应的是td, th { padding: Xpx Ypx },必须显式重置,否则浏览器默认值不一致(Chrome 8px,Firefox 10px)
真正容易被跳过的,是确认 border-spacing 是否被父级样式覆盖,以及是否漏掉了 td, th 的 padding 重置——这两处不处理,光调 margin 永远看不到想要的“左右留白”效果。



















