2014-04-22 207 views
0

我有一個項目表與奇數和偶數行着色爲更好的視野:CSS - 優先CSS規則

tr:nth-child(even) {background: #CCC} 
tr:nth-child(odd) {background: #FFF} 

我也有檢查一個代碼,如果該項目是晚,如果是這樣的i顏色全部項目排成紅色(而不是偶數行和奇數行的通常着色)

此外,每行都有一個類,並且類名取決於項目是否延遲。 的類別是:

.redBackground {background-color:#CD5C5C;} 

.yellowBackground {background-color:#FFFF00;} 

.noBackground {} 

的問題是,該行具有一流不管,偶數奇數行的CSS總是「贏」,所以我從來沒有看到紅色或黃色的背景。 我如何讓它工作,以便在遲到的日期的情況下,它會顯示紅色和黃色的類,並在正常情況下,它會是奇數或甚至?

+0

嘗試'.parent .redBackground'或'div.redBackground'。不要使用'!important'。 –

+0

爲什麼不改變class =「redBackground」,只要項目遲到所需元素 –

回答

4

使用選擇具有較高specificity,例如嘗試

table tr.redBackground {background-color:#CD5C5C;} 
+0

謝謝!這正是我需要的。只是一個問題:爲什麼tr.red比tr:第n個孩子更具體? – Alex

+0

@Alex:這本身並不是更具體 - 類選擇器和僞類是同樣具體的。假設'tr'和'.redBackground'之間的空間是一個錯誤,它是'tr'前面的'table'選擇器的附加,這個選擇器具有更高的特異性。 – BoltClock

+0

@BoltClock,謝謝,空間是一個錯誤,現在修復。 –

-3

使用!important

.redBackground {background-color:#CD5C5C !important;} 

.yellowBackground {background-color:#FFFF00 !important;} 
+3

不好,考慮寫一個更具體的選擇器而不是使用'!important' –

+0

據我所知,它不是一個很好的做法,使用重要的 – Alex

0

您可以使用家長選擇,您的情況下,這應該工作:

tr.redBackground {background-color:#CD5C5C;} 

tr.yellowBackground {background-color:#FFFF00;} 

或者,

#parent_div .redBackground {background-color:#CD5C5C;} 

#parent_div .yellowBackground {background-color:#FFFF00;} 
0

爲什麼不這樣做的Java腳本。假設你知道哪些行是爲了以後的項目。

if(project is late){ 

    document.getElementById("MyElement").className = "redBackground"; 

} 

保持默認類爲奇數和偶數,並在晚期項目更改類的情況下。假設您不介意以編程方式更改課程。

+0

爲什麼javascript? –

+0

顯然,他正在跟蹤後期項目,所以他檢查項目是否延遲,他可以添加幾行代碼 –

+2

@TejasPatel我相信OP現在也在做同樣的事情。問題是與該類相關的樣式正在被覆蓋。所以,OP要求更高的特異性來覆蓋已經存在的樣式。 –