要清除HTML table默认样式,需设置border-collapse: collapse、border-spacing: 0,并重置th/td的padding和text-align;表单控件需单独处理outline、resize及伪元素;通配符重置无效且有害。

table 默认边框和间距怎么去掉
HTML table 的默认样式主要来自两处:border-spacing(单元格间空隙)、cellpadding/cellspacing(已废弃但仍有影响),以及浏览器对 border-collapse 的默认值(通常是 separate)。直接设 border: none 不够,必须组合处理。
-
border-collapse: collapse是关键——它让相邻边框合并,消除默认 2px 间距 -
border-spacing: 0必须显式声明,否则 Safari/旧版 Firefox 仍可能保留间距 - 不要依赖 HTML 属性如
cellspacing="0",它已被废弃,且无法覆盖 CSS 优先级 - 如果表格内有
th/td,它们默认带padding,需单独清:th, td { padding: 0; }
如何安全清除表单控件在 table 中的默认表现
当 input、select 或 button 放在 td 里时,它们会继承浏览器对表单元素的默认样式(比如 Chrome 的 focus 蓝光、IE 的清除按钮、textarea 可拖拽),这些不是 table 自身样式,但常被误认为是。
- 清除 focus 轮廓:用
outline: none,但务必补上可访问性替代样式,例如border: 1px solid #007bff - 干掉 IE/Edge 的输入框清除按钮:
input::-ms-clear { display: none; } - 禁用 textarea 拖拽:
textarea { resize: none; } - 避免用
-webkit-appearance: none直接抹掉所有原生外观——它会让 iOS 上的select失去下拉箭头,且影响屏幕阅读器识别
为什么不能只靠 * { margin: 0; padding: 0; } 清 table
通配符重置对 table 几乎无效。它不碰 border-spacing、caption-side、empty-cells 这些 table 特有属性,更不会改 border-collapse 的初始值。反而可能引发新问题:
-
* { box-sizing: border-box }会让table的width: 100%行为异常,因 table 默认是content-box,强行改后宽度计算错乱 -
th和td的默认font-weight: bold和text-align: center不会被通配符影响 - 某些浏览器(如 Firefox)对
table的display类型有特殊渲染逻辑,全盘归零反而破坏语义对齐
推荐的最小可用 table 重置片段
不需要引入整个 normalize.css,只需 4 行就能干净起步,兼容现代浏览器且不影响可访问性:
立即学习“前端免费学习笔记(深入)”;
table {
border-collapse: collapse;
border-spacing: 0;
}
th,
td {
padding: 0;
text-align: left;
}如果项目已用 normalize.css,这段代码要放在它之后——因为 normalize 保留了 th 的加粗和居中,你得显式覆盖。
真正容易被忽略的是:table 的默认行为(比如自动撑宽、换行策略、vertical-align)比 div 更隐性,调样式前先 inspect 元素看 computed 样式,别猜。



















