我的CSS Hack观点
网络整理 - 07-29
本文仅针对IE6、IE7以及FF这三种浏览器而写,因为这三种浏览器的市场最大! 关于CSS Hack,网上有很多种讲法,比较普遍的就是*和_写法!
用这种写法去区分IE6和IE7以及FF,如:
#abc{background:orange;*background:green;_background:blue;}
这种写法很简单,但是以上写法,是不能通过W3C的CSS验证的!
为什么要通过W3C的验证呢?
一般人都会想:怎么简单怎么写,管它是否通过验证,那重要吗?
我来回答你:“是的,或许并不重要,但最好能通过验证!”
在解释原因之前,先让我再说说另外一种Hack的写法,这种写法可以顺利通过校验!如:
1、当IE6、IE7、FF都不同效果时,用以下Hack:
#abc{
background:orange
}/*标准样式,三种浏览器都能理解*/
*+html #abc{
background:green
}/*IE7独有Hack,只有IE7可以理解,后复盖前,所以IE7会使用这个样式*/
* html #abc{
background:blue
}/*IE6独有Hack,只有IE6可以理解,后复盖前,所以IE6会使用这个样式*/
2、当IE6不同效果,IE7以及FF相同效果时,用以下Hack:
#abc{
background:orange !important;background:blue
}/*!important有优先作用,并且IE7和FF都能理解这个Hack,所以此样式在IE7与FF下应该解析为橙色,IE6应该解析为蓝色*/
这种写法就复杂了点!虽然不是复杂很多,但毕竟代码多了一大堆!可这种写法是能通过W3C的CSS校验的!如果不相信的话,可以自己去校验一下(这是对很多根本不知道Hack可以通过校验的人说的)!
好吧,现在我来解释一下,为什么最好用可以通过校验的Hack写法,使得CSS的代码可以顺利通过校验的原因!
嗯,我们回头看一下,第一种写法不能通过校验,它也叫Hack,第二种写法可以通过校验,它依然叫Hack!
那么……请你自己想一下,*和_这两种写法能在浏览器里解析出来,但W3C的校验为什么不给予通过?
而*+html和* html这两种写法一样能在浏览器里解析出来,可为什么W3C偏偏就让这种复杂的写法顺利通过校验呢?
呵呵……想到了吧?是的!W3C是支持并且赞同设计师们使用这种Hack的!
所以,个人认为,我们在平时写Hack的时候,哪怕多打几个代码,还是使用这种能通过校验的Hack好一些!
Author: IdealBoy
QQ: 7273771