2010-05-13 97 views
15

我有以下的HTML。應用CSS樣式的順序是?

<ul> 
    <li> 
    <a>asdas</a> 
    </li> 
</ul> 

在我的CSS樣式表我對標籤常規設置,和幾個hundered線後設置UL李一。 像這樣:

a:link 
{ 
color: red; 
} 
... 
ul li a 
{ 
color:blue; 
} 

螢火告訴我,那首先的顏色:藍色裝,事後重寫的顏色:紅色
到目前爲止,我一直認爲,該加載CSS文件和順序單個CSS文件中的樣式順序告訴瀏覽器應如何格式化html元素。不幸的是,我現在正在經歷它,反之亦然。

所以告訴我,我該如何糾正我的風格才能實現裏面的一個標籤,使其呈現藍色而不是紅色?

+0

可能的重複[外部文件中兩種衝突CSS樣式的規範行爲是什麼?瀏覽器對此支持如何?](http://stackoverflow.com/questions/2819410/what-is-the-spec-behavior-for-two-conflicting-css-styles-from-an-external-file) – Quentin 2010-05-13 11:36:09

回答

21

根據哪種樣式最適用的樣式是特定到元素,然後按照文本順序爲具有相同特性的規則應用樣式。更多這裏in the spec。因爲a:link更多特定ul li a,這種風格贏得不管位置。

所以告訴我,我該如何糾正我的風格才能實現裏面的一個標記,使其呈現藍色而不是紅色?

使藍色規則至少與紅色規則一樣具體。在這種情況下,你可以通過添加:link它:

ul li a:link 
{ 
    color:blue; 
} 
+4

實際的原因是'a:link'比'ul li a'更具體。 – Quentin 2010-05-13 11:39:46

+0

@大衛:挺好!是的,我有點失望,不是嗎?固定。 – 2010-05-13 11:42:26

+0

這個答案實際上並沒有回答 這個問題:「我怎樣才能糾正我的風格,以實現li內部的標籤呈現藍色而不是紅色?」 – 2014-05-08 10:33:31

0

我會使用color:blue !important;

+8

這有兩個問題。首先,你的語法錯了(重要的單詞之前有一聲巨響)。其次,這是大錘的做法,並沒有回來。如果你有第三種風格想加入到級聯中,那麼!重要的是它也會打倒它。 – Quentin 2010-05-13 11:38:10

+0

@David Dorward謝謝,我糾正了它。我只是回答他的問題:「所以告訴我,我應該如何糾正我的風格,才能讓李的內部標籤呈現藍色而不是紅色?」我不是,他沒有說任何關於第三種風格的東西。現在:D它非常醜陋我同意但它回答他的問題 – ant 2010-05-13 11:45:23

+0

可以downvoter告訴我爲什麼downvote,我修正了語法錯誤,還有什麼我必須修復/解釋/否 – ant 2010-05-13 11:47:02

9

下面是關於CSS選擇器特異性的文章,看起來不錯:http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

的部分如何衡量特異性?給你答案:

a:link => one tag (a) + one pseudo-class (:link) = 1 + 10 = 11 points 
ul li a: => three tags (ul, li, a)     = 1 + 1 + 1 = 3 points 

所以a:link風格贏了。

提示:僅當兩個css選擇器具有相同的特徵時,順序(在CSS文件中)纔有意義。