2014-10-19 60 views
1
#div1 span{ 
    background-color:green; 
} 
.a{ 
    background-color:red; 
} 
<div id="div1"> 
    <span>span1</span> 
    <span class="a">span2</span> 
</div> 

爲什麼span2背景顏色未設置爲紅色?它仍然是綠色!發生了什麼?範圍背景顏色樣式未設置爲工作

+0

發表您的HTML請 – Haris 2014-10-19 09:36:21

+0

這裏是代碼:http://jsfiddle.net/6gLvwzod/ – 2014-10-19 09:38:40

回答

0

你需要!important

#div1 span{ 
    background-color:green; 
} 
.a{ 
    background-color:red !important; 
} 

覆蓋原有的CSS,這將修復它

+1

雖然它會解決它,但這不是最佳實踐,尤其是在這種情況下,重要的是與其他規則相比具有最高的特異性,並且幾乎不可覆蓋。這就像給出一個999999的元素z索引,而不是隻指定10或任何你需要的。 – 2014-10-19 09:51:43

2

它的發生是因爲評分系統,這是由CSS引擎用來找出哪些規則具有最高的優先級,因此應該應用。 它被稱爲特異性。 如果您想了解更多關於該主題,請訪問以下資源:

https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html

在你的情況#DIV1跨度(1個id選擇+ 1標籤選擇器)獲取更高的優先級,然後.a(1類選擇器)。這就是爲什麼在你的例子中綠色覆蓋紅色的原因。

嘗試#div1 .a {}而不是.a以實現期望的結果。

+1

謝謝!解決... – 2014-10-19 09:44:36