border-collapse必须作用于table元素,取值collapse可合并相邻边框(按宽>样式>声明顺序优先级胜出),separate则保持独立边框并启用border-spacing;二者互斥。

border属性只控制粗细,但单独用它根本画不出边框
很多人以为 border="1" 就是“加边框”,其实它只是告诉浏览器:给表格所有单元格套一层默认样式(1px solid #000),但这个行为不可控、不可改颜色、不响应 CSS。更关键的是,border 属性本身**不是 CSS 的 border**,它没有样式(solid/dashed)和颜色字段,只接受数字——所以它“控制线条粗细”这个说法,严格来说只在它自己的语义里成立,且已失效。
-
border="0"表示禁用该旧机制,不是“0像素边框”,而是“不渲染自带边框” -
border="2"不等于 CSS 的border: 2px solid red,它仍只能是黑实线,且会加剧双线问题 - 现代浏览器对
border属性仅做兼容性保留,遇到冲突时优先级极低,常被 CSS 覆盖却留副作用
真正起作用的是 CSS 的 border 属性,三要素缺一不可
CSS 的 border 是简写属性,必须同时指定宽度、样式、颜色,否则不显示。常见错误是只写 border-width 或只写 border-color,结果页面干干净净——因为浏览器默认 border-style: none。
- 正确写法:
border: 1px solid #333、border: 2px dashed #e00 - 单边控制更安全:
border-bottom: 1px solid #ccc,避免意外覆盖其他边 - 想让某列无边框?直接给对应
td或th设border-right: none,别碰border-collapse
border-collapse: collapse 必须配合使用,否则全是双线
只给 table 加 border,顶多有外框;只给 td 加,内部有线但外框消失;两者都加又不设 border-collapse,就会看到每条线都是两倍粗——因为表格边框和单元格边框各自独立渲染。
-
border-collapse: collapse必须写在table元素上,不能只写在td - 它让相邻边框“合并成一条”,不是“隐藏一条”,所以颜色/粗细取两者中更粗或更显眼的那个(实际按层叠顺序)
- 如果用了
border-spacing,它只在border-collapse: separate下生效,设了collapse就自动失效
容易被忽略的细节:outline 不是 border,别用 border: none 去“关掉蓝线”
点击表格单元格或其中的可聚焦元素(如 input)时突然冒出一圈蓝线,那是 outline,不是边框。它不占布局空间、不能设圆角、也不受 border-collapse 影响。
- 误写
border: none完全没用,蓝线照常出现 - 真要移除焦点轮廓,得单独写
outline: none,但请慎用——会损害键盘用户可访问性 - 更稳妥的做法是用
:focus-visible替代,或换一种视觉反馈(比如加背景色)
border(table、th、td),以及 border-collapse 是否生效——少一个,就可能看到空白、双线、错位或完全没反应。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











