2014-04-22 123 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要求更高的特异性来覆盖已经存在的样式。 –