frameborder仅控制边框显隐,不能设宽度;精确控制须用css的border属性,且需移除frameborder以防覆盖。

frameborder 属性不能设置边框宽度,只能控制边框“显”或“隐”——值为 "0" 时隐藏,"1" 时显示(默认)。想调边框粗细、颜色、样式,必须用 CSS。
frameborder="0" 和 border="0" 不是一回事
有人误以为 frameborder="0" 能让边框变细或归零,其实它只是开关:关了就彻底不渲染边框(包括宽度、颜色、样式),开了就用浏览器默认边框(通常为 2px 灰色实线,不可控)。而 border="0" 是旧版 <table> 的属性,对 <code><frame> 或 <iframe></iframe> 完全无效。
-
<frame src="a.html" frameborder="0">→ 边框消失,无宽度可言 -
<frame src="a.html" frameborder="1">→ 边框出现,但宽高/颜色/圆角全由浏览器决定,无法指定 -
<frame src="a.html" border="0">→ 被忽略,等同于没写
想精确控制 iframe 边框宽度?用 CSS 的 border
现代页面中,<iframe></iframe> 是唯一还可能用到 frameborder 的场景,但它已被 HTML5 废弃。正确做法是删掉 frameborder 属性,改用 style 或 class 控制:
<iframe src="demo.html" style="border: 1px solid #ccc;"></iframe> <iframe src="demo.html" class="clean-iframe"></iframe>
- 必须移除
frameborder,否则部分浏览器(如旧版 Safari)会优先按它的逻辑覆盖 CSS -
border: none和border: 0效果相同,都清空边框;但border: 0更易被误读为“宽度为 0”,实际含义是“无边框”,推荐写border: none - 如果 iframe 内容来自同源,还可通过 JS 注入样式进一步干预内部边框(如重置
body { margin: 0 }),但跨域则不可行
frameset + frame 已淘汰,别再用
<frameset></frameset> 和 <frame> 在 HTML5 中被完全移除,所有现代浏览器虽仍能解析,但不保证长期兼容。它们的 frameborder、border、bordercolor 等属性全部失效或行为不一致——比如 Chrome 会忽略 bordercolor,Firefox 可能强制统一为灰色。
- 替代方案是用 CSS Grid 或 Flex 布局模拟分栏效果,配合
iframe嵌入内容 - 若维护老系统,
frameborder="0"仍可工作,但请同步加style="border: none"防止未来浏览器收紧解析 -
frameset中的border="5"属性不是标准,仅 IE 支持,且与frameborder冲突,务必避免混用
真正容易被忽略的点是:即使你写了 frameborder="0",某些 CMS 或编辑器会自动给 iframe 补上默认 style="border: 1px solid #ddd;",结果边框还在——得检查最终渲染出的 HTML,而不是只信源码里的 frameborder。











