必须同时设置table、th、td的border为0或none,并在table上声明border-collapse: collapse,否则因ua默认样式和separate模型像素错位,safari等环境下仍会显示1px白线。

只给 <table> 加 <code>border: none 没用,必须同时处理 <th>、<code><td> 和 <code>border-collapse 状态,否则 Safari、iOS WebView 或缩放时大概率漏出 1px 白线。
为什么 border: none 单独写没效果?
浏览器 UA 样式默认给 <th> 和 <code><td> 设了 <code>border-style: inset(哪怕你没显式声明),而 border: none 只清 style,不碰 width 和 color;在 border-collapse: separate(默认值)下,相邻单元格的“不可见边框”像素对齐错位,抖出细缝。
-
border: 0更稳妥——它同时置零 width / style / color,兼容旧 Android WebView - 即使所有元素都写了
border: none,若没设border-collapse: collapse,仍可能有间隙 - 第三方框架(如 Bootstrap 的
table-bordered)会覆盖你的规则,得检查 CSS 优先级
真正生效的三要素写法
缺一不可,且必须全部作用在对应元素上:
<table> 上设 <code>border: 0或border: none<th> 和 <code><td> 都要单独设 <code>border: 0-
border-collapse: collapse必须写在<table> 上(写在 <code><div> 或单元格里无效) <p>推荐统一用类名控制:</p> <pre class="brush:php;toolbar:false;">.no-border { border: 0; border-collapse: collapse; } .no-border th, .no-border td { border: 0; }</pre> <h3>小程序或富文本环境(如 mp-<a style="color:#f60; text-decoration:underline;" title="html" href="https://m.php.cn/zt/15763.html" target="_blank">html</a>)怎么写?</h3> <p>这类环境不支持全局 class 或外部 CSS,必须用 <code>tagStyle逐元素注入,且顺序不能错:-
tagStyle是对象,键名严格为"table"、"th"、"td"(大小写敏感) -
table项里必须包含"border-collapse": "collapse",否则th/td的border: 0会被忽略 - 禁用
border="0"属性——HTML5 已废弃,mp-html 不解析,也无法覆盖单元格边框
反复调试仍有白线?绕开表格渲染更实际
当目标只是视觉无边框排版(而非语义化数据表),真没必要死磕表格模型:
- 用
display: grid模拟行列结构,完全脱离 UA 边框逻辑 - 纯布局场景优先选
div + flex,无默认边框、padding、vertical-align 干扰 - 若必须保留
<table> 语义(比如屏幕阅读器需求),加 <code>transform: translateZ(0)强制硬件加速,可缓解 iOS sub-pixel 渲染抖动无边框 ≠ 无结构。哪怕边框消失了,
padding、line-height、vertical-align这些才是决定内容是否整齐的关键,别只盯着 border。
-











