边框合并属性必须写在表格元素上,写在单元格或行无效。正确设置需三步:表格设合并,同时控制外边框和内边框。合并后边框按宽度、样式等优先级胜出。合并模式下边框间距失效,缝隙多由内边距导致。
表格边框合并这个CSS属性,说起来不算复杂,可实际开发中总有人在其上栽跟头。最常见的问题是:明明写了 border-collapse: collapse,为什么表格边框还是双线的?要搞明白这个,得先记住一条铁律——border-collapse 必须写在 table 元素上,放在 td、tr 或其他标签上,浏览器直接无视。这就是很多人“写了没反应”的根本原因。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
border-collapse: collapse 却还是双线?浏览器默认使用 border-collapse: separate,每个 td 和 th 各自独立绘制边框,再加上默认的 border-spacing: 2px,视觉上自然就是两条线夹着白缝。常见的翻车场景包括:
border-collapse: collapse 写在 td 或 tr 上——浏览器直接忽略;border="1" 属性,但未配合CSS合并逻辑;normalize.css 默认设为 separate,却未覆盖;!DOCTYPE,触发怪异模式,属性行为变得不可靠。那么正确姿势是什么?三步走,一步都不能少:
table { border-collapse: collapse; } —— 合并所有相邻边框,同时废除 border-spacing;table { border: 1px solid #333; } —— 控制外边框(可选,但建议显式设置,避免不可预料的默认值);th, td { border: 1px solid #333; } —— 控制内边框。注意内边框的值必须和外边框一致,否则交界处会加粗。例如 th 设 2px、td 设 1px,合并后那条线就会是 2px。不是叠加,也不是取平均,而是按优先级“胜出”。这规则有点像擂台赛:
2px > 1px);solid > dashed > dotted);border: none 不参与竞争,会被其他方向的边框“穿透”显示。例如想让某个单元格只显示顶边框,需写成 td { border: none; border-top: 1px solid #000; }。border-spacing,先看 padding很多人遇到缝隙第一反应就去查 border-spacing,但在 border-collapse: collapse 模式下,这个属性已经失效。缝隙真正的元凶,往往是 th / td 的 padding 撑开的:
th, td { padding: 0; };padding 控制,例如 th, td { padding: 8px 12px; };table 设 display: block 或 inline-block——这样会让 border-collapse 失效(它只在 display: table 及其变体下工作)。真正容易被忽略的是:启用 border-collapse: collapse 后,表格的盒模型就变了——内部边框不再各自占空间,table 的总宽度 ≠ 所有 td 宽度之和 + 两倍边框。调样式时,需把 table 的 border、padding 和 width 放在一起看,才能得到预期的布局。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述