2011-01-11 24 views
5
<div id=checkout> 
<form id="confirmation" class="center"> 
<p>content</p> 
</form> 
</div> 

我有一個CSS選擇器#checkout form.center已被使用我怎樣才能專門用CSS來定位這個元素ID?

我想具體覆蓋此爲確認表,但沒有的事情,我試着寫得到應用。我應該認爲#confirmation form.center或其他東西應該取代第一條規則,但它似乎甚至沒有達到目標。 #confirmation被上面提到的選擇器覆蓋,因爲它不是特定的。

回答

9

擴展在BoltClock的回答是:

每個CSS選擇器有一個specificity值。對於每個元素,如果其某個屬性的值發生衝突,則具有最高特異性的規則優先。一般來說,CSS選擇器中的信息越多越好,它的特異性就越大。

出於這個原因,增加一些適合你現有的選擇(#checkout form.center)將能夠覆蓋它:

#checkout form.center { 
    /* your existing CSS */ 
} 

#checkout #confirmation { 
    /* your overrides; this has higher specificity */ 
} 

#checkout form#confirmation { 
    /* this would also work -- even higher specificity */ 
} 

#checkout form#confirmation.center { 
    /* even higher */ 
} 

#checkout form.center p { 
    /* works inside the p only, but also has 
    greater specificity than #checkout form.center */ 
} 
5

如果您需要專門重寫現有的選擇,使用方法:

#checkout #confirmation 

爲什麼#confirmation form.center不工作的原因是因爲選擇form.center,坐在內一個#confirmation元素,這不是相同。你應該這樣寫:

#checkout form#confirmation.center 

但這是過度殺傷;我建議的第一個選擇器足夠具體,可以覆蓋第一個選擇器。