2014-07-09 22 views
0

我有一个父树具有background-color属性集的DOM树。我希望该父项的一个子项继承background-color,但相反,它从它的第一个父项继承。该第一个父级没有设置背景色,从而使子节点的背景透明。背景颜色继承自其中值未定义的元素

我知道我可以通过在CSS中明确声明背景颜色来解决此问题,但我希望用户能够在主父级上设置background-colorcolor并使其正确级联。此外,这是非常古怪的行为,所以我很好奇,看看是否有人知道为什么会这样,或者如何解决它。

我放在一起a fiddle来说明问题。我期望跨度有一个红色的背景,黄色的div在那里说明,事实上的跨度不是有红色背景。

+0

那么你是否期待“跨度”应采取红色? –

+0

是的,没错。我将这个问题添加到 – fredrikekelund

回答

0

这是绝对正常的行为。 span的父母不是ul元素,而是它的“祖父”。所以如果li还没有继承ul的东西,span也不会继承。

+0

这个问题也许吧,但是在父主体(ul)上设置颜色属性可以使所有孩子的颜色级联。但我想这是因为每个元素的默认浏览器样式都是这样的? 'color:inherit;' 'background-color:transparent;' – fredrikekelund

+0

[w3schools](http://www.w3schools.com/cssref/pr_background-color.asp)它并没有让它穿过所有的儿童。他们只是甜甜的。 – Silveraven

0

设置你ul > liinherit还有的background-color - 这样ul > li继承ul,并ul:span first-child继承ul > li

http://jsfiddle.net/5qfrc/2/

+1

是的,但他需要做的是将'span:first-child'背景颜色设置为'inherit'。如果你将它设置为'ul> li',你会强制整个'li'(每次出现)具有与它的父级相同的背景(我们想要避免的)。 – Silveraven