2009-09-10 28 views
1


特異性和類選擇(級聯)

假設我們要找出什麼會特別<h2>元素的顏色屬性。


1)在試圖找出一個選擇具體怎麼是,規則的一個說,選擇與班級更大數量比用較少的班級選擇更具體。因此,在下面的示例中的特定<h2>的顏色應該是綠色的(這個例子是從一些網站採取的):

.one .two .three .four .five .six .seven 
{ 
    color: green; 
} 


.eight .nine .ten 
{ 
    color: blue; 
} 


一)首先,如果我指定不止選擇器中有一個類,那麼它不起作用......換句話說,文本不會是綠色或藍色。任何想法爲什麼它不起作用?

B)忽略了一個事實,如果它包含一個以上的類選擇是行不通的: 特有的類。二。三。四。五。六。七類後裔。一或我們特定的<h2>元素是所有這些類的成員嗎?


2)另一條規則說,如果我們帶選擇ID的更大的數量比用更少的ID選擇更具體。因此,在下面的示例中的特定<h2>顏色應該是綠色:

#one #two # three #four #five #six #seven 
{ 
    color: green;  
} 


#eight #nine #ten 
{ 
    color: blue; 
} 


一)上述要求是有道理的只有#two一個#一個孩子,#three一孩子#two和孫子#一個 etc ?!正確?


3)I假設在用戶的CSS文件中定義的更具體的選擇器被選擇過在作者的CSS文件中定義的特定的選擇少?


感謝名單


編輯:

第一CSS規則適用於與類的 「七」 的所有元素,其中有一個祖先與類的「六」,而「六」又具有「五」的祖先等等。

嚴,你的意思是規則適用於元素E7,但只有: - E7是類的成員。E6是元素E6的類別.six和後代的成員E6 -E5是類別.5的成員和元素E4的後代等。 ?


我還問,如果我對我的第二個問題的假設(在戰後初期)是正確的?

+0

我很想知道,您從哪個網站獲取此代碼? – DisgruntledGoat 2009-09-10 20:36:47

+0

http://www.maxdesign.com.au/2009/06/30/css-cascade/ - 第61頁和第63頁 – SourceC 2009-09-10 21:22:00

+1

我認爲幻燈片應該回答大部分問題。我認爲他們通過使用不適用於特定標籤的樣式將事情混淆到最後。幻燈片39回答你的問題3 - 重要性的順序是瀏覽器,作者,用戶,所以是的用戶樣式表會贏。但幾乎沒有人使用它們。 – DisgruntledGoat 2009-09-11 00:35:36

回答

3

第一個CSS規則適用於所有具有「七」類的元素,其中有一個「六」類的祖先,而「六」類的祖先具有類「五」的祖先,依此類推。

您發佈的原始規則與任何h2標籤都不匹配,除非它們具有「綠色」類和所有這些祖先元素。我認爲你的例子非常複雜,因爲只有當你擁有至少八個嵌套元素時,特殊規則纔會發揮作用!

一個簡單的例子是這樣,它的目標有三個不同的規則H2標籤(排名不分先後):

h2 { color: red; } 
.one h2 { color: green; } 
.two .three h2 { color: blue; } 

在這個例子中的H2將是紅色:

<h2>Heading 2</h2> 

在這個例子中的h2將是綠色的:

<div class="one"> 
    <h2>Heading 2</h2> 
</div> 

在這個例子中的h2將是藍色的。即使.one是最近的祖先,.two.three意味着後者的CSS規則適用。

<div class="two"> 
    <div class="three"> 
     <div class="one"> 
      <h2>Heading 2</h2> 
     </div> 
    </div> 
</div> 

一個類似的過程適用於ID,除了ID有10倍的「權重」的類。看看w3 specs瞭解更多詳情。這是一個非常艱難的話題,但是我希望能讓事情變得更加清晰。

老實說,這種情況經常不會出現 - 我儘量保持我的CSS規則相當通用,並避免使用不同類名的大量嵌套元素。如果你一直在努力研究特異性,那麼你的HTML可能會變得太複雜了!

+0

嗨,如果你願意提供一些更多的幫助...我編輯了我的第一篇文章以迴應你的回覆......無論如何,thanx幫助我 – SourceC 2009-09-10 21:23:07

0

當你把類選擇之間的空隙,就意味着「後裔」 ...

相反,你應該把他們都togheter:

.one.two.three.four.five.six.seven 
{ 
    color: green; 
} 


.eight.nine.ten 
{ 
    color: blue; 
} 

這意味着,所有這些類的元素會變成有色的,而不是所有元素的後代,而這些元素的順序依次是類。

+0

我不認爲這回答了所有問題... – DisgruntledGoat 2009-09-10 20:38:16