表格边框不合并的根源是 border-collapse 默认为 separate,解决方法是给 table 设置 border-collapse: collapse 并统一单元格边框样式,同时注意外边框叠加、表头交界处理及兼容性限制。
表格边框不合并,通常是因为浏览器默认将 border-collapse 设为 separate,导致单元格各自绘制边框,出现双线、空隙或粗细不一的问题
。解决核心就是显式设置 border-collapse: collapse。
仅给 td 或 th 加边框是不够的,必须作用于 table 根元素:
table { border-collapse: collapse; }
border-spacing: 0;(兼容旧写法或 reset 场景)outline 或 box-shadow,它们不会被 collapse 影响,需单独处理即使启用了 collapse,若相邻单元格边框样式/宽度/颜色不同,仍可能显示异常:
td, th { border: 1px solid #ccc; }
table 设置 border,它会叠加在 collapsed 边框之外有时 thead th 和 tbody tr:first-child td 的上边框会重叠显示为一条加粗线:
thead th { border-bottom: none; },让 tbody tr:first-child td { border-top: 1px solid #ccc; }
border-bottom 统一控制分隔线位置,保持逻辑清晰border-collapse: collapse 在所有现代浏览器中支持良好(包括 IE8+),但要注意:
display: block 改变 table 行为,border-collapse 将失效empty-cells: hide 可隐藏空单元格边框(仅对 separate 有效,collapse 下自动忽略空格)!important 临时调试(上线前应优化优先级)