2010-11-10 106 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