直接用 border + border-collapse: collapse 就能控制内部网格线颜色,不用 js、不用 hack;关键在于 table 必须设 border-collapse: collapse,再统一给 td/th 设 border,否则因边框未合并会出现双线或颜色错位。

直接用 border + border-collapse: collapse 就能控制内部网格线颜色,不用 JS、不用 hack,但必须注意边框合并逻辑,否则会出现双线或颜色错位。
为什么 border 单独设在 td 上会出 double line?
默认情况下,table 和每个 td 都有独立边框,相邻单元格的边框会并排显示(比如左右两个 td 各画 1px 红边,中间就变成 2px 宽的红缝)。这不是“线变粗”,而是两根线没合并。
-
border-collapse: collapse是关键——它让相邻边框合并成一条线,此时颜色才真正生效 - 只给
table设border不影响内部线;只给td设而没加collapse,就会看到虚影、重叠或颜色不一致 -
border-collapse: separate(默认值)下,border-spacing会进一步干扰颜色呈现,慎用
border-collapse: collapse 必须作用于 table 元素
这个声明不能只写在 td 或 tr 上,它只对 table 生效。否则样式无效,内部线依然双份。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 正确写法:
table { border-collapse: collapse; } td, th { border: 1px solid #666; } - 错误写法:
td { border-collapse: collapse; }—— 浏览器直接忽略 - 如果表格嵌套(比如
td里再套table),子表也要单独设border-collapse,父表的不继承
单侧边框着色:精准控制某条线的颜色
不需要整行/整列统一色时,用 border-left、border-bottom 等单边属性更稳妥,避免误染其他边。
- 例如高亮最后一列右边界:
td:last-child, th:last-child { border-right: 2px solid #e74c3c; } - 想让表头下边线加粗红色,数据行不加:
th { border-bottom: 2px solid #c0392b; } td { border-bottom: none; } - 注意:单边设置仍依赖
border-collapse: collapse,否则border-bottom和下方td的border-top会打架
兼容性与常见失效点
老项目里常有人用过时的 bordercolor 属性或 bgcolor,这些在 HTML5 中已废弃,现代浏览器(Chrome/Firefox/Safari/Edge)完全不解析。
- 失效写法:
<td bordercolor="red">xxx</td>→ 无任何效果 - 替代方案只有 CSS:
style="border: 1px solid red;"或 class 类名 - IE8 及更早版本不支持
border-collapse: collapse对border-radius的配合,如有圆角需求需另寻方案 - 移动端 Safari 对
border-collapse的渲染偶尔有像素级偏移,建议用border: 1px solid而非0.5px避免模糊
真正要改内部网格线颜色,核心就两条:先确保 table 有 border-collapse: collapse,再给 td/th 设 border。其它所有“看起来像”的技巧,基本都绕不开这个组合。漏掉任一环,颜色就不可控。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










