强制CSS优先级是我想要的方式

时间:2013-02-19 07:09:32

标签: css

我希望这个CSS的优先顺序与它们的顺序完全相同:

/*Highlight every second row in a .styledtable without .no-odd-row-higlight*/
.styledtable:not(.no-odd-row-highlight) tr:nth-child(odd) td{
    background:#eeeeee;
}

/*Orange highlight, normally used by PHP*/
.highlight-orange, .highlight-tds-orange td{
    background:#ff4000;
}

/*Yellow highlight, normally used by JS*/
.highlight, .highlight-tds td{
    background:#f7fe2e;
}

我理解他们没有这样做的原因是特异性,但我无法弄清楚如何让它按照我的意愿运作。如何使第一条规则最不重要,第二条规则覆盖第一条规则,最后一条规则覆盖所有规则?

由于

3 个答案:

答案 0 :(得分:0)

请记住这一点,当两个规则具有相同的权重时,指定的最后一条规则获胜! 。  如果前面的例子被声明并且其中一个被设置为!important,那么具有!important的那个将具有最高优先级!

答案 1 :(得分:0)

假设您可以控制更改所有三个的定义:

.highlight.highlight {
    /*things*/
}

严格比只有一个类的任何规则更具体,包括普通.highlight

答案 2 :(得分:0)

我刚刚将!important添加到两者第二个和最后一个规则。这样第二个和最后一个覆盖第一个,但最后一个覆盖第二个,因为它在它之后。