只给 table 加 border: none 没用,因为 th 和 td 有 ua 默认 inset 边框,且 border-collapse: separate 下相邻单元格隐形边框易错位抖出白线;必须同时设置 table、th、td 的 border: 0 及 table 的 border-collapse: collapse 才能彻底清除。

只给 table 加 border: none 为什么没用?
因为浏览器默认对 th 和 td 应用了 UA 样式(比如 border-style: inset),即使 table 没边框,单元格之间仍可能渲染出“隐形边框”。border-collapse 默认是 separate,相邻单元格的不可见边框在缩放或 iOS 渲染时容易错位抖出 1px 白线。
table、th、td 的边框必须三者同时清空
真正生效的最小组合只有三个动作,缺一不可:
-
table元素设border: 0或border: none -
th和td元素也设border: 0(border: 0比none更稳妥,它同时置零 width/style/color) -
table上加border-collapse: collapse(这个属性只对table有效,写在th或td上无效)
推荐统一用类名控制,避免漏写:
.no-border {
border: 0;
border-collapse: collapse;
}
.no-border th,
.no-border td {
border: 0;
}
第三方框架或全局样式会覆盖你的设置
Bootstrap、Tailwind 等框架常带 table { border-collapse: separate !important } 或 .table-bordered 类,导致你写的规则失效。检查方式很简单:
- 打开 DevTools,选中表格元素,看
Computed标签页里border和border-collapse的最终值 - 若发现被
!important覆盖,要么提高选择器优先级(如加body .no-border),要么直接用!important强制(仅临时调试) - 小程序或
mp-html等受限环境不支持 class 注入,必须用tagStyle分别为table/th/td注入样式,且顺序不能错
视觉上“没线” ≠ 排版干净
即使边框全清掉了,th 和 td 的 padding、line-height、vertical-align 依然影响内容对齐和行高。特别是移动端,padding: 0 不等于“贴边”,有些 UA 会保留最小内边距。真正干净的无边框排版,靠的是这些细节的逐项确认,而不是只盯着 border。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











