假设我有一个使用两个css类的div,它们都使用text-align,但是一个是居中的,另一个是右对齐的。
是否可以指定一个优先于另一个优先级的东西?
答案 0 :(得分:66)
!important
是懒惰的方式,但你真的应该选择#1来避免重要意义。添加一个!important
后,即使更多重要,也无法使用它来制定其他规则。
答案 1 :(得分:23)
如果您想明确它,可以通过为包含这两个类的元素提供规则来指定这两个类的组合如何协同工作。例如,您可以明确地为类foo
和bar
提供与bar
相同的样式,如下所示。这是有效的,因为.foo.bar
对于具有这两个类的元素而言仅比.foo
更具体,因此此规则将优先于.foo
规则。
.foo { text-align: center }
.bar, .foo.bar { text-align: right }
如果您不希望这样明确,您可以将bar
的规则放在foo
的规则之后,因为给定的选择器具有相同的特异性,后面的规则优先于先前的规则的:
.foo { text-align: center }
.bar { text-align: right }
您可以在CSS规范章节中了解有关规则优先级如何确定cascade的更多信息;这是CSS的“C”,为了充分利用CSS,很清楚这一点很重要。
答案 2 :(得分:10)
您应该使用CSS特异性来覆盖以前的声明 http://htmldog.com/guides/cssadvanced/specificity/
p = 1 point
.column = 10 points
#wrap = 100 points
所以:
p.column { text-align: right; }
可以被覆盖:
body p.column { text-align: left; }
答案 3 :(得分:1)
正如“ meder omuraliev”回答的那样,您可以使用更指定的选择器。并且我想提供一种通用的方式,即如何为att presdeo的任何类型的选择器分配更高的优先级。
例如:
html body .foo { font-family: Arial !important;}
html body .bar[attr]{ font-family: Arial !important;}
您可以这样使用:
html body .foo:not([NONE_EXISTS_ATTR]){ font-family: Consolas !important;}
html body .bar[attr]:not([NONE_EXISTS_ATTR]){ font-family: Consolas !important;}
答案 4 :(得分:0)
NA