1、css hack定义
因为不一样的浏览器,好比Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不同,所以会致使生成的页面效果不同,得不到咱们所须要的页面效果。 这个时候咱们就须要针对不一样的浏览器去写不一样的CSS,让它可以同时兼容不一样的浏览器,能在不一样的浏览器中也能获得咱们想要的页面效果。
这个针对不一样的浏览器写不一样的CSS code的过程,就叫CSS hack!
2、css hack原理及分类
因为不一样的浏览器对CSS的支持及解析结果不同,外加CSS中的优先级的关系,咱们就能够根据这个来针对不一样的浏览器来写不一样的CSS。
一、CSS Hack大体有3种表现形式:
(1)类内部Hack:好比 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",而firefox两个都不能认识,等。
(2)选择器Hack:好比 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{},等。
(3)HTML头部引用(if IE)Hack:针对全部IE:<!--[if IE]><!--您的代码--><![endif]-->,针对IE6及如下版本:<!--[if lt IE 7]><!--您的代码--><![endif]-->,这类Hack不只对CSS生效,对写在判断语句里面的全部代码都会生效。
书写顺序:通常是将识别能力强的浏览器的CSS写在前面。
3、css hack写法总结
IE hack
全部的ie浏览器均可识别\9
IE6 hack
_
只有ie6能识别_
IE7 hack
*
只有ie六、ie7能够识别*
IE8 hack
只有ie八、ie9能够识别\0
IE9 hack
只有ie八、ie9能够识别\9\0
因此的浏览器都支持
在这里要解释一下,看到网上有关于ie6不支持!important,也有关于ie7不支持!important的说法,通过反复试验,感受这样说都是不稳当的,应该说全部的浏览器都支持!important,关键是要写对顺序,详见
CSS:!important,
一些CSS Hack因为浏览器存在交叉认识,因此须要经过层层覆盖的方式来实现对不一样浏览器进行Hack的,全部书写顺序很重要。
最后举个例子来讲明:
div{color:red; color:green\9;*color:blue;_color:yellow}
结果是:谷歌和火狐下是红色;ie8和ie9下是绿色;ie7下是蓝色;ie6下是黄色