2012-02-10 44 views
18

我有幾個樣式表。第一個樣式表是一些我想用作默認樣式的樣式表。取決於幾個因素,用於生成頁面的代碼可能包含一些樣式表,其中的值應覆蓋默認值。css樣式表定義的順序是否重要?

如果我使用這個,我可以相信默認樣式表中的值將被其他樣式表中的值覆蓋嗎?我使用類選擇器,並將名稱匹配時覆蓋值。

<link href="defaults.css" rel="stylesheet" type="text/css"/> 
<link href="valuestooverridedefaults.css" rel="stylesheet" type="text/css"/> 

這需要適用於所有瀏覽器,包括手機。如果可能,我想避免使用「!important」。

謝謝!

+2

哇,夥計們。這是很多相同的答案。笑反正@喬恩,你會發現這篇文章有用。它非常清楚地解釋了一切。 http://hungred.com/useful-information/css-priority-order-tips-tricks/ – 2012-02-10 17:06:40

回答

16

有一個定義cascade其中的樣式排序和應用。 當聲明具有相同的的重要性(權重),來源特定性則後者聲明獲勝。大多數的答案涉及重要性特異性這裏而不是起源

以下是有關CSS Cascades一些很好的幻燈片。

+2

僅供參考。鏈接到幻燈片已經死了。 – Seagull 2015-01-27 10:07:37

+0

可能是這樣的:http://css.maxdesign.com.au/#downloadable – Jellema 2015-08-18 11:55:09

+1

這是我見過的CSS最好的學習資源。爲我工作。 – raarts 2017-03-17 08:02:39

2

是的,這就是樣式表的工作原理。最後一個勝利。

只要確保默認樣式表的特異性不超過您的覆蓋。是的,如果可以的話,請避免!這很愚蠢。

2

如果我使用這個,我可以相信默認樣式表 中的值將被其他樣式表中的值覆蓋嗎?我正在使用 類選擇器,並且將在名稱匹配時覆蓋值。

正如您所指出的,當第二張選擇器與第一張選擇器相同時,答案爲「是」。

使用!important將是例外,所以請避免使用它,正如您也注意到的那樣。

3

如果選擇器是相同的,則最後一次加載優先,就像在相同樣式表中兩次聲明同一個類一樣。

3

如果你已經在不止一個CSS文件中定義樣式選擇,從最後加載CSS文件中的樣式將採取

2

是的 - 線索是「級聯」樣式表的名稱。因此,內聯樣式將覆蓋頭中定義的樣式,並且頭中的樣式將覆蓋樣式表中的樣式。最後一個樣式表加載可能會覆蓋之前加載的樣式。如果你使用類似螢火蟲或鍍鉻的檢查員,它會告訴你每一種風格來自哪裏,或者哪些風格已經過時。

2

簡單的答案是肯定的。任何重新向頁面下方聲明的樣式將覆蓋在頁面加載中聲明的類。

爲此,類的第二個聲明必須在繼承中。

類似.content {}和.body .content {}的類在繼承樣式時可能會有不同的表現。