IE6双倍边距仅在Quirks模式下触发,因解析器将浮动元素误作行内格式化上下文致margin重复累加;添加<!DOCTYPE html>启用标准模式即可根治,display:inline非修复而是误用源头,现代浏览器无视且引发新问题。

IE6双倍边距只在Quirks模式下触发
这不是CSS写错了,而是IE6的解析器在怪异模式(Quirks Mode)下把浮动元素当成“行内格式化上下文”处理,导致margin-left或margin-right被重复累加一次。只要HTML开头有<!DOCTYPE html>,IE6就走标准模式,这个bug根本不会出现。
display:inline不是修复,是误用源头
很多人加display: inline,其实是被老教程带偏了——它不是修复手段,而是让IE6切换渲染路径的副作用。现代浏览器完全无视这个组合,反而可能引发vertical-align失效、flex子项错位、height声明被忽略等问题。
- 它只对IE6 Quirks模式有效,IE7+和所有现代浏览器都不认
-
display: inline-block在IE6基本不可用,且不能绕过bug - PostCSS、stylelint等工具会警告或自动删掉这类规则
真正该检查的三个条件
遇到“疑似双倍边距”,先确认是否同时满足:
- 页面文档模式确实是IE6 Quirks(F12开发者工具里看“文档模式”)
- 元素同时用了
float: left和margin-left(方向必须一致) - 没有
<!DOCTYPE html>,或被CMS模板自动覆盖
90%的情况,删掉display: inline、补上<!DOCTYPE html>,问题就没了。剩下那10%,往往是因为某一行display: inline藏在十年没动过的reset.css里,还没人敢动。
立即学习“前端免费学习笔记(深入)”;


















