什么是 CSS Hack?ie6、ie7、ie8 的 hack 分别是什么?
针对不同的浏览器写不同的 CSS code 的过程,就是 CSS hack。
常见写法
-
属性前缀法(IE 私有前缀):
/* 仅 IE6 */ _color: red; /* IE6、IE7 */ *color: red; /* IE6、IE7、IE8 */ color: red\9; /* IE8+ */ color: red\0; /* IE9+、Chrome、Safari */ color: red\9\0; -
选择器前缀法:
/* IE6 及以下 */ * html .box { ... } /* IE7 */ *:first-child+html .box { ... } /* IE7+ */ html > body .box { ... } /* 仅 IE8 */ @media \0screen { .box { ... } } /* IE9+ */ @media all and (min-width:0) { .box { ... } } -
条件注释法(HTML 层面,IE9 以下支持):
<!--[if IE 6]><link rel="stylesheet" href="ie6.css"><![endif]--> <!--[if IE 7]><link rel="stylesheet" href="ie7.css"><![endif]--> <!--[if IE 8]><link rel="stylesheet" href="ie8.css"><![endif]--> <!--[if !IE]><!--><script src="modern.js"></script><!--<![endif]-->
补充:
- 现代浏览器已统一标准,CSS Hack 几乎只剩维护老旧项目(如银行/政府内网)时才会用到。
- 主流方案是使用 Autoprefixer / postcss-preset-env 自动添加浏览器前缀,避免手写 hack。
- 条件注释只在 IE10 及以下有效,IE11 已不再支持;新项目应使用特性检测(
@supports)来判断浏览器能力。



