不能在所有浏览器可靠消除边框,因html5已废弃border="0",现代标准模式下被忽略;ie8及更早版本虽可能解析但行为不稳定,仅对a img的默认蓝色边框部分生效,且易与css冲突。

img 的 border 属性在 IE8 及更早版本中是否还能用?
不能依赖。HTML5 已彻底移除 border 属性,IE8 虽然会解析 border="0" 或 border="1",但行为不稳定:它只影响链接图片的默认蓝色边框(a img),且无法控制颜色、样式;一旦遇到 CSS border 声明,旧属性可能被忽略或冲突。验证器报错、构建工具过滤、WebView 渲染异常都可能发生。
为什么给 a 包裹的 img 加了 border: none 还有边框?
常见于 IE6–IE8,根源是浏览器对 a img 的 UA 样式(user agent stylesheet)设置了默认 border: 2px outset 或类似值,而你的 CSS 选择器权重不够,或者没覆盖到该组合:
-
img { border: none; }→ 不生效,因为a img的 UA 样式优先级更高 -
a img { border: none; }→ 必须这样写才可靠 - 若用了 CSS 预处理器或模块化方案,注意作用域是否隔离导致规则未注入
如何让 img 边框在所有浏览器(含 IE6)里统一消失?
最稳妥的做法不是“去掉边框”,而是“从根上阻止它出现”:
- 全局重置:
* { margin: 0; padding: 0; border: 0; }(配合box-sizing: border-box) - 针对性清除:
a img, img[usemap] { border: none; }——usemap是旧版 IE 中可能触发边框的另一个隐式条件 - 避免空
src:img:not([src]) { opacity: 0; },否则 IE6/7 会渲染一个带边框的占位框 - 不依赖
border="0",哪怕它看起来“在 IE6 里能用”——它不可维护、不可测试、与现代构建流程不兼容
IE6 下图片撑破容器,和边框有关系吗?
有间接关系。IE6 默认把 img 当作 inline 元素,行内布局 + 默认 vertical-align: baseline + 图片下方留白,会让父容器高度异常增加,视觉上像“边框挤出间隙”。这不是边框本身,但常被误判:
-
img { display: block; }或vertical-align: bottom;可消除底部空白 -
a img { display: block; }更安全,因为链接图片最容易暴露此问题 - 如果同时设了
max-width,IE6 不支持,得用width: expression(this.width > 500 ? '500px' : 'auto');(慎用)或服务端裁图
真正麻烦的从来不是边框要不要加,而是你有没有在 reset 阶段就把它和图片的 display、vertical-align、box-sizing 绑定处理——漏掉任意一环,低版本里都会冒出来。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











