2012-09-12 53 views
4

這篇文章(儘管它是基於一個事實導致我在工作中遇到麻煩)更多的是哲學問題而不是真正的問題提交。Css規則應用程序訂單

我碰到這個令人費解之後震盪下跌的情況下...

這是不是真的,因爲我(我認爲)理解這一現象的一個問題,它是如何統治,它有效果。

我做了以下示例:http://jsfiddle.net/q7xAn/儘可能描述。

在這種情況下,爲什麼(Ô上帝爲什麼)跨度有黃色背景?

我不知道哪個規則適用於它,但更多的是:在其名稱中扭曲(與我總是假設的相反)最後一條聲明規則是否適用於第一條聲明?

我的意思是「.red span」和「.yellow span」具有相同的複雜度。

  • 相同長度
  • 每個項目在給定位置具有相同的權重/重要性

它們在CSS選擇自然順序等同。

然後,在適用的問題上應該遵循的是哪條規則最貼近樣式的項目。 在我的示例中,跨度應該用'.red span'(最接近的規則)而不是'.yellow span'(它也是正確的,但被'.red span''覆蓋')。

這種行爲是否存在「歷史性」,「政治性」,「哲學性」或任何其他原因? 可能會強制我正在尋找的行爲的一些DOCTYPES(可能是?)嗎? 我可以向w3c提交請求(爲什麼不?)?怎麼樣 ? 任何信息,建議,不同的觀點,都比歡迎!

感謝所有提前。


Edit note : 

我不想引用自己,但在註釋艾默裏克,我想出一個好辦法來解釋我的問話真的是什麼。


總的來說,如果我有,讓我們說7種顏色方案(每種彩虹顏色)。

還假設我是一個團隊(比方說)10人的css製造商。

我希望他們(我的團隊)能夠嵌套顏色方案塊。

  • 在一種情況下,紅色的塊會包含黃色和洋紅色的塊。
  • 在其他(有趣的)情況下,人們希望有7層嵌套(紅色嵌套在嵌套爲黃色的橙色嵌套在...)。

我現在沒辦法事先決定需要哪種用法。

當前CSS經歷的行爲會強迫我改造我的CSS 一次新嵌套需要彈出與令人討厭過於臃腫的規則來結束。
在維護這方面是一種暴行:「(

+0

對不起!但是,在閱讀你的文章的字眼之後,我確實無法抑制一個微笑:) – verisimilitude

+0

不確定你笑是因爲你喜歡我寫的方式還是因爲取笑我的近似英語(我是法語)。無論如何,我很高興我讓你微笑;) – Ar3s

+2

一個原因可能是,如果瀏覽器只是應用最新的適用規則,那麼它就不必跟蹤每個元素的級聯順序。 –

回答

0

這裏是一個article(不是真的,但最近明確),這也解釋了(如果我沒有誤解你的問題)回答您尋找

有關。例如,如果您更換:

.red span, .red{ 
background-color: #F00 
} 

人:

.yellow .red span, .red{ 
    background-color: #F00 
} 

你的背景將是紅

問候。

+0

是的,這將工作,我已經知道;)。但我並不是想通過某種方式來解決問題,或者瞭解如何實現CSS行爲,而是以某種方式理解爲什麼以這種方式實現。額外的好處是可以發現其他的實現(也許doctype依賴),我可以強制我的頁面允許我正在尋找的行爲。無論如何,謝謝你的回覆:) – Ar3s

+0

一般來說,我覺得如果我有7個顏色方案(每個彩虹顏色一個)。 我是一個團隊(比方說)10人的CSS製造商。 我希望他們能夠嵌套顏色方案塊。 在一種情況下,紅色的塊會包含黃色和洋紅色的塊。 在另一個(有趣)的情況下,人們希望有7層嵌套(紅色嵌套在嵌套爲黃色的黃色嵌套在...)。 我現在沒辦法預先。當前的CSS經驗行爲會迫使我在每次出現新需求時重新調整自己的CSS,並最終導致過分臃腫的規則。 – Ar3s

+0

做到這一點的唯一方法是在我腦海中彈出的是根據這[小提琴](http://jsfiddle.net/q7xAn/11/)定義css'根類',並將它們嵌套在html – Aymeric

2

其被稱爲specificity的css。如果兩個選擇器與特定元素匹配並且它們具有相同的weight,則出現later的選擇器將應用於該元素。

閱讀this瞭解更多信息。

你選擇.red span.yellow span都有0,1,1等應用最後一個規則(我提到會詳細說明如何計算權重的鏈接)的重量。

還讀了this來自W3的文章,這將更好地解釋事情。

希望一切都有所瞭解:)

+0

謝謝,它已經全部對我來說是有意義的,我完全理解,自從它被宣佈後,黃色接管了紅色。但在對艾默默的帖子的評論中,我更好地描述了我的問題根本上是什麼。 「當前CSS經驗豐富的行爲會迫使我在每次出現新需求時重新調整自己的CSS,並最終導致過分臃腫的規則。」 希望我現在有更多意義,但無論如何,感謝您的答覆。 這篇文章將幫助我更準確地理解如何理解瀏覽器計算規則,如何「自然地」授予:) – Ar3s