只设 table { border: 1px solid #000 } 不够,因为内框由 td/th 边框和 border-collapse 决定;必须同时设置 border-collapse: collapse 和 td, th { border: none } 才能仅保留外框。

直接给 table 加 border 样式、同时清除单元格边框和间距,就能只留外框——但很多人漏掉 td/th 的边框重置,结果内框还在。
为什么只设 table { border: 1px solid #000 } 不够
浏览器默认渲染中,table 元素本身不自带“内边框”,真正造成网格线的是 td 和 th 的边框,以及 cellspacing(已废弃)或 border-collapse 的影响。只控制 table 边框,对单元格之间的线毫无作用。
-
cellspacing="0"是旧属性,现代写法必须配合border-collapse: collapse -
td, th { border: none }必须显式声明,否则继承或默认边框可能残留 - 如果用了
border="1"这类 HTML 属性,会覆盖部分 CSS,建议彻底移除
border-collapse: collapse 是关键开关
这个 CSS 属性决定表格边框是否合并。设为 collapse 后,相邻单元格边框会合为一条线;设为 separate(默认)则保留独立边框+间距,即使你把 cellpadding 和 cellspacing 清零也没用。
- 必须同时设置
border-collapse: collapse和td, th { border: none } - 只设
collapse但没清单元格边框 → 内框变细但仍在 - 只清单元格边框但没设
collapse→ 单元格之间仍有空白间隙(尤其在 Firefox 中明显)
最简可靠写法(推荐复制即用)
以下代码在所有现代浏览器中稳定生效,不含过时属性,也不依赖内联 style:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
立即学习“前端免费学习笔记(深入)”;
<style>
.outer-only {
border: 1px solid #333;
border-collapse: collapse;
width: 100%;
}
.outer-only td,
.outer-only th {
border: none;
padding: 8px;
}
</style>
<table class="outer-only">
<tr><th>姓名</th><th>城市</th></tr>
<tr><td>张三</td><td>北京</td></tr>
<tr><td>李四</td><td>上海</td></tr>
</table>
注意:如果表格嵌套或有复杂样式(比如 :hover 行背景),td 的 border 仍可能被意外激活,建议加 !important 或用更具体的选择器兜底。
用 frame 属性?别踩这个坑
HTML 的 frame 属性(如 frame="hsides")确实能控制外框显示,但它只作用于 table 边框本身,**完全不管单元格之间那条线**。也就是说:frame="box" 只让外圈有框,内网线照常存在——这和需求完全相反。
-
frame是 HTML4 遗留属性,W3C 已标记为过时,不推荐新项目使用 - 它无法隐藏
td边框,也不能替代border-collapse - 在严格模式(
<!DOCTYPE html>)下行为不稳定,尤其 Safari 对frame=void支持差
真正起作用的永远是那三行:外框 border + 合并 border-collapse + 清空单元格 border。其余都是干扰项。


















