frame属性仅控制table外边框显示哪几条边,不控制颜色、粗细、样式,也不影响内部单元格分隔线;设frame="void"仍见外框的常见原因是存在css border规则,此时frame被忽略。

frame 属性只控制 <table> 外边框“画哪几条线”,不控制颜色、粗细、样式,也不影响内部单元格分隔线。
<h3>为什么设了 <code>frame="void" 还能看到外框?
常见错误是以为 frame 和 border 独立生效——其实不是。只要 border 属性存在(比如 border="1"),浏览器默认会画四边;而 frame="void" 会强制覆盖这个行为,让外框彻底消失。但如果你同时用了 CSS border,frame 就完全无效了。
-
frame是 HTML 原生属性,仅对纯 HTML 渲染路径起作用 - 一旦页面中存在任何
table { border: 1px solid #000 }类 CSS,frame被忽略 - IE 浏览器会错误地把
frame应用到内部单元格边框上(其他浏览器不会)
frame="hsides" 和 frame="vsides" 到底画哪些边?
这两个值命名容易误导:“hsides”不是“水平方向的边”,而是“horizontal sides”,即上下两条边;同理,“vsides”是 vertical sides,即左右两条边。它们和 rules 属性无关,rules 控制的是内部线(行/列之间),frame 只管最外一圈。
-
frame="hsides"→ 只显示top和bottom边框 -
frame="vsides"→ 只显示left和right边框 -
frame="lhs"和frame="rhs"是遗留写法,不是left/right,别拼错 - 若想只留顶部+右侧,必须组合使用 CSS,
frame不支持多边混搭
在现代项目里还该用 frame 吗?
基本不该。它已被主流开发实践弃用,原因很实际:
- 无法设置颜色、宽度、圆角、虚线等任意样式
- 与 CSS
border冲突,调试时容易误判来源 - HTML5 中已不推荐,部分构建工具(如 Vite + HTML minifier)可能直接剔除
- 移动端 Safari 或旧版 Android WebView 对
frame支持不稳定
真要只显外框且隐藏内线,用这两句更可靠:table { border-collapse: collapse; border: 1px solid #000; } table td, table th { border: none; }
真正容易被忽略的点是:当你在调试一个老项目时,看到 frame 和 border 同时出现,不要假设它们叠加生效——它们是互斥的渲染指令,谁最后解析、谁占优,取决于浏览器解析顺序和是否启用 CSS。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











