CSS Hack的原理是什么
由于不同的浏览器对CSS的支持及解析结果不一样,还由于CSS中的优先级的关系。我们就可以根据这个来针对不同的浏览器来写不同的CSS。
CSS Hack大致有3种表现形式,CSS类内部Hack、选择器Hack以及HTML头部引用(if IE)Hack,CSS Hack主要针对IE浏览器。
类内部Hack:比如 IE6能识别下划线”_”和星号” * “,IE7能识别星号” * “,但不能识别下划线”_”,而firefox两个都不能认识。等等
选择器Hack:比如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。等等
HTML头部引用(if IE)Hack:针对所有IE:<!–[if IE]><!–您的代码–><![endif]–>,针对IE6及以下版本:<!–[if lt IE 7]><!–您的代码–><![endif]–>,这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面如何写里面说得更详细些。
如何写CSS Hack
比如要分辨IE6和firefox两种浏览器,可以这样写:
代码如下 | 复制代码 |
<style> div{ background:green; /* for firefox */ *background:red; /* for IE6 */ } </style> |
我在IE6中看到是红色的,在firefox中看到是绿色的。
IE6 CSS Hack
IE6 CSS Hack only
代码如下 | 复制代码 |
/* For IE6 and earlier */ * html .demo{color:#090;} .demo{_color:#090;}other IE6 CSS Hack .demo{*color:#090;/* For IE7- */} |
IE7 CSS Hack
代码如下 | 复制代码 |
IE7 CSS Hack only * + html .test{color:#ff0;} /* For IE7 */other IE7 CSS Hack .demo{*color:#090;/* For IE7- */} |
IE8 CSS Hack
代码如下 | 复制代码 |
IE8 CSS Hack only .demo{color::#09F/}/* For IE8 */other IE8 CSS Hack .demo{color:#09F;/*IE8+*/} |
IE9 CSS Hack
IE9 CSS Hack only
暂未发现仅IE9能识别的CSS Hack;随着IE10、IE11的出现网络上流传的“IE9 CSS Hack only”已经失效。
代码如下 | 复制代码 |
other IE9 CSS Hack .demo{color:blue9;} /* IE9+*/ |
IE10 CSS Hack
IE10 CSS Hack only
无
代码如下 | 复制代码 |
other IE10 CSS Hack .demo{color:blue9;} /* IE9+*/ @media screen and (min-width:0) { |
总结,随着IE的逐渐标准化,IE11和IE10可能很少用不到CSS Hack了。