2010-11-10 125 views
4

我知道IE7不支持任何CSS屬性值inherit除了directionvisibility。當瀏覽器不支持某個值時,它應該不會應用給定的聲明(該特定行)。有誰知道爲什麼IE7不使用第一個ul a顏色聲明,而是選擇使用純色a顏色聲明?它只是忽略了整個ul a規則?IE7和「繼承」:忽略整個規則?

需要明確的是:在大多數瀏覽器的第一個鏈接是紅色,第二個鏈接是藍色的。在IE7中,第一個鏈接是紅色的,但第二個鏈接是紅色的,即使我至少有一個聲明,它應該在ul a規則中理解。

<!DOCTYPE html> 
<html> 
<head> 
    <title>Anchor Inherit Test</title> 
    <style type="text/css"> 
    body { 
     color: #369; 
    } 
    a { 
     color: #f00; 
    } 
    ul a { 
     color: #369; 
     color: inherit; /* this should be ignored by IE7, right? */ 
    } 
    </style> 
</head> 
<body> 
    <p>This is testing a <a href="#">red link</a> in a paragraph.</p> 

    <ul> 
     <li><a href="#">here is a link that should not be red</a></li> 
    </ul> 
</body> 
</html> 
+0

它並不忽視整個規則;如果你放置其他聲明,他們仍然會工作。 – BoltClock 2010-11-10 20:26:57

+0

那爲什麼不用'ul a {color:#369}'? – theazureshadow 2010-11-10 20:29:32

+0

我認爲它是用'inherit'值重寫它的。不知道爲什麼這隻會影響顏色,但如果我放置一個有效的'padding'和一個無效的'padding'我看不到這種行爲。 – BoltClock 2010-11-10 20:30:14

回答

5

color不是不忽略不支持和無效值的唯一屬性。
例如background-colordisplay也受到影響。

有誰知道爲什麼IE7不使用 第一UL顏色聲明, 而是選擇使用普通的一個 顏色聲明?它只是忽略整個ul規則中的 ?

任何無法識別的值(甚至沒有)會觸發該錯誤。
顯然LTE IE7丟棄所有的顏色聲明在同一規則(甚至!important的)如果最後一個包含錯誤的值。
而這個jsbin證實它也有效地覆蓋了先前的聲明。

正如你可以使用一個dynamic property的替代品。

+0

有趣的是'背景顏色'受到影響,'背景'不是,當然使用繼承可能是雷區! – clairesuzy 2011-05-22 08:02:24

+0

嘿,偉大的測試 - 你對bug的描述比我的一般。 – theazureshadow 2011-05-25 03:58:05

+0

@shadow thx! (檢查我的更新) – Knu 2011-05-25 05:48:56