我的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