要彻底消除表格边框,必须同时设置 table、th、td 的 border 为 none 或 0,并添加 border-collapse: collapse;还需排查 outline、box-shadow 和框架类名干扰,iOS 下 sub-pixel 白线建议改用 grid/flex 布局。

table、th、td 的 border 必须全部设为 none 或 0
只给 table 加 border: none 是不够的。浏览器默认会给 th 和 td 渲染内边框(尤其在 border-collapse: separate 模式下),漏掉任意一个,都可能看到细线。
正确做法是三者同时处理:
-
table { border: none; }或table { border: 0; } -
th, td { border: none; }—— 缺一不可 - 如果用内联样式,每个
<table>、每个 <code><th>、每个 <code><td> 都得加 <code>style="border: none;",不推荐必须加 border-collapse: collapse
即使所有 border 都设了 none,旧版 Safari、某些 Android WebView 或缩放状态下仍可能露出 1px 缝隙。这是因为默认的
border-collapse: separate会让相邻单元格边框各自独立渲染,哪怕它们“看不见”,像素对齐时也会抖动出线。加上这一条才能真正压平:
table { border-collapse: collapse; }- 它必须和
border: none同时存在,单独写没用 - 注意:
border-collapse只对table元素生效,不能写在div上
检查 outline、box-shadow 和框架类名是否干扰
删光了 border 还有线?大概率是别的东西在“冒充”边框:
- 用浏览器 DevTools(F12)选中某个
td,看 Computed 面板里outline是否非空 —— Ant Design、Element UI 等框架常给表格加outline实现聚焦反馈 - 检查父容器有没有
box-shadow投影落在单元格边缘,视觉上像边框 - 搜索 HTML 中是否有
class="table-bordered"、class="border"这类框架预设类,它们会覆盖你的 CSS - 必要时用
table, th, td { border: none !important; outline: none !important; }强制兜底
iOS Safari 下的 sub-pixel 白线不是 bug,是渲染特性
哪怕所有 CSS 都写对了,在 iPhone 上滚动或缩放后仍偶尔闪现 1px 白线。这不是你漏写了什么,而是 Retina 屏下 sub-pixel 对齐导致的抗锯齿抖动。
此时继续调 border 没意义,更实际的解法是:
- 换布局方案:用
display: grid或display: flex模拟表格结构,彻底绕开table渲染管线 - 若需语义化,给
div加role="table"、role="row"、role="cell",配合aria-label - 不要迷信“必须用 table 标签”,只要数据是二维结构、视觉无边框,div + CSS 完全可控且更稳定
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











