E8及以下版本有一些和!imporant有关的怪僻,它允许一个赋值优先级更高。IE7及更早版本接受任意字符串替代important, 并且会正常处理该值,而其它浏览器则会忽略。
/* 在IE8及以下版本下设文字为蓝色,其它浏览器中为黑色 */
body {
color: black;
color: blue !ie;
}
相似地,IE8及更早版本接受在!important声明后面的非字母符号,而其它浏览器会忽略它。
body {
color: black;
color: blue !important!;
}
HTML元素是W3C标准DOM (Document Object Model)的根元素,但是IE 4至6的版本中还有一个神秘的父元素。完全兼容的浏览器会忽略这个* html选择器,但IE4-6却会对它正常处理。这样就可以为这些版本的浏览器指定特别的规则。比如,这个规则可以特别指定IE4-6中的文字大小,但对 其它浏览器不起作用。
* html p {font-size: 5em; }
这个HACK使用了完全有效的CSS。
子选择器hack
(适用于IE6及以下版本)
IE6和早期的版本不支持“子选择器”(>),利用这个我们可以为其它浏览器指定特别的规则。举例来说,这个规则可以让段落文字在 firefox 变成蓝色,但在IE7之前的版本里却不能。
html > body p { color: blue; }
虽然IE7增加了对子选择器的支持,但人们发现了新的hack可以把IE7也排除。当一个空的注释紧跟在子选择器的后面重复的时候,IE7会不 识别后面的规则,就和较早版本的浏览器一样。
html >/**/ body p { color: blue; }
虽然IE7不再识别以前的* html hack,但它使用了一个相似的新的hack。
*:first-child+html p { font-size: 5em; }
或者:
*+html p { font-size: 5em; }
此代码只适用于IE7,不适用于其它任何浏览器。注意这个HACK只在IE7标准模型里工作正常,在怪异模式下不能用。这个hack也被IE8 的兼容模式(相当于IE7的标准模式)所支持。和星号HTML hack一样,它也使用了有效的CSS。
IE6及以下版本有一个!important带来的问题,当在同一段代码块中同一元素的同一属性有了不同的值,本应结果是第二个值被第一个取 代,但IE6及更低版本并不这么做。
/* 在IE6及更低版本中设文字为蓝色 */
body {
color: black !important;
color: blue;
}

678

被折叠的 条评论
为什么被折叠?



