E8及如下版本有一些和!imporant有關的怪僻,它容許一個賦值優先級更高。IE7及更早版本接受任意字符串替代important, 而且會正常處理該值,而其它瀏覽器則會忽略。html
/* 在IE8及如下版本下設文字爲藍色,其它瀏覽器中爲黑色 */瀏覽器
body {spa
color: black;firefox
color: blue !ie;htm
}字符串
類似地,IE8及更早版本接受在!important聲明後面的非字母符號,而其它瀏覽器會忽略它。import
body {hack
color: black;im
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;
}