ie8修复需将ie8-fix.css置于主样式表之后且选择器权重更高,禁用媒体查询,documentmode返回实际渲染模式而非声明模式。

<!--[if IE]> 这种写法现在基本没用了,IE10+ 和所有现代浏览器(包括 Edge、Chrome、Firefox)完全不解析它,只对 IE5.5–IE9 有效。如果你的项目还必须支持 IE8 或 IE9,那它还能用;否则别白费力气。
条件注释只能硬写在 HTML 里
它不是 JS 可控的,也不是 CSS 里的规则——你不能把它塞进 <style> 块,也不能用 document.write 或 appendChild 动态插入。IE8+ 在 DOMContentLoaded 后压根不认这个语法。
- 必须出现在 HTML 文件顶层,且只能在
<head>或<body>开头(不能嵌套在<div>里) <!DOCTYPE html>必须顶格写,前面不能有空格、BOM 或 XML 声明,否则整个条件注释失效- 路径别写
./css/ie.css,IE6 不识别点斜杠,得用css/ie.css或绝对 URL
<!--[if lt IE 9]> 是最常用也最容易写错的写法
很多人写成 <!--[if ltIE9]>(缺空格)或 <!--[if LT IE 9]>(大写),结果 IE8 都不触发。关键字 lt、gte、lte 必须全小写,且前后各带一个空格。
- 正确:
<!--[if lt IE 9]>(IE9 以下)、<!--[if gte IE 8]>(IE8 及以上) - 错误:
<!--[if ltIE9]>、<!--[if lt IE9]>(少空格)、<!--[if !IE]>(IE10+ 里根本不识别,不是“非 IE”) <![endif]-->的闭合标记不能漏掉叹号,写成就失效加载
<link>比写 CSS hack 更干净,但要注意顺序和权重比起在主 CSS 里堆
*zoom:1或_float:left,单独引入ie8-fix.css更可控。但它的生效依赖两个前提:- 必须放在主样式表之后加载,否则会被覆盖
- 选择器权重不能比主样式低,否则修复无效(比如主 CSS 用
.btn { display: flex; },IE 补丁里写.btn { display: inline-block; }就得确保它能赢过前者) - IE8 不支持媒体查询,所以别在条件注释里给
<link>加media="screen and (min-width:768px)",它直接忽略
别指望
document.documentMode和条件注释行为一致document.documentMode返回的是当前文档实际渲染模式(比如 IE9 文档模式下打开兼容视图,会返回 7),而前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











