2012-03-31 52 views
16

如何覆蓋其他樣式表中指定的樣式?沒有重寫樣式!重要

我不想用!重要標籤來覆蓋它們。我寧願指定一個新的樣式表,把樣式放在那裏。這可以通過更改樣式表的加載順序來實現嗎?

+1

爲什麼是Twitter的自舉標籤已移除?我認爲這與這個問題有關。 – 2012-03-31 14:11:06

+0

@AndresIlich,另一個樣式表不一定是'twitter-bootstrap'。 – Starx 2012-03-31 14:25:03

+0

@Starx我明白,但最初提到這個框架的問題,與海報案件無關嗎? – 2012-03-31 14:32:50

回答

59

這取決於。 CSS代表層疊樣式表,並且有樣式應用於的特定順序,覆蓋以前的樣式。沒有太多的細節:

  • 如果你的規則具有相同的特徵,只需加載你的樣式表第二,一切都會正常工作。
  • 如果您的規則具有更高的特異性,則順序無關緊要。
  • 如果您的規則具有較低的特異性,您需要修改它們以匹配。

那麼,什麼是特異性?基本上,它是規則中每個選擇器的總和。所以這個:

a { 
    background-color: black; 
    color: white; 
} 

有比這少的特異性:

body a { 
    color: orange; 
} 

。 ID選擇器比類選擇器具有更高的特異性,它們與僞類選擇器具有相同的特異性,它們比標記選擇器具有更高的特異性。所以,如果所有的內容包含在<div>contentid,你將能夠覆蓋一個風格,看起來像這樣:

body a { 
    border: 0; 
} 

有了:

#content a { 
    border: 1px solid black; 
} 
+0

令人難以置信的答案。這解決了我的問題。希望我可以多次投票! – Hendrik 2012-04-01 11:03:51

+0

很好的解釋,謝謝! – 2014-10-06 12:23:24

+0

但我被告知使用ID選擇器的樣式是不好的做法。 ID選擇器應該只用於JS? – Matthew 2015-06-14 05:37:25

2

應該首先加載boostrap樣式表,然後再加載你的樣式表,這樣你的覆蓋將被選中。

這被稱爲「級聯」中,從文檔:

級聯

這是要摻混由一些樣式表語言如CSS,以允許從幾個來源風格信息中提供的功能 在一起。例如,這些可以是企業風格準則, 一組文檔通用的樣式,以及特定於單個 文檔的樣式。通過單獨存儲這些樣式表,樣式表可以重複使用,從而簡化了創作過程,並更有效地使用了網絡緩存。 級聯定義了一個有序的樣式表順序,其中 規則在後面的表格中具有比以前更高的優先順序。不是 所有樣式表語言都支持級聯。

0

請看http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html

<p class="example"> 
    This is a <strong>test</strong>. 
</p> 

strong { color: red; } 
p strong { color: green; } 
p.example strong { color: blue; } 

該文本將是藍色的。規則的順序無關緊要。

+3

這不是一個很好的方式來給出一個答案 – sandeep 2012-03-31 13:58:55

+0

,但它是一個很好的鏈接,說明在星球大戰的基礎上的特異性:) – roger 2012-03-31 14:08:21

+0

這是更好的,如果你舉例說明OP的權力問,然後給一個鏈接作爲參考。 – sandeep 2012-03-31 14:12:48

1

如果您可以增加specificity of styles,則可以在不使用!important的情況下執行此操作。

例如:

HTML

<div id="selector"> 
    <a>Hello</a> 
    <a class="specific">Hi</a> 
</div> 

CSS

div a {} 

將被忽略,如果你給裏面#selector

.specific { } 

在這裏,我一個特定的類這是一個demo解釋我的觀點。基本上,這個想法是儘可能地定義樣式。