2014-07-09 66 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