2012-01-12 83 views
5

我有一個Html包含類似於: (div div內的多個div)。Css將不會覆蓋繼承的值

<div class="a"> 
    <div class="b"></div> 
</div> 

我的CSS看起來像這樣:

.a div { 
    border: solid; 
    border-width: thin; 
} 

.b { 
    border: none; 
    border-width: 0px; 
    border-collapse: collapse; 
} 

出於某種原因,B的值將不覆蓋。但是,如果我只寫了一個而不是「a .div」,我就不會得到a中其他div的行爲。

我得到這個工作的唯一方法是使用「重要!」 (即「邊界:無!重要」;)但這似乎不夠優雅。

喜歡的任何想法,這是怎麼回事那裏..

埃胡德。

回答

1

.a div.b具有更高的特異性。
如果您希望.b的css覆蓋.a,請給它更高的特異性,例如.a div.b

(或者你可以使用!important,是的,但這裏不推薦使用。)

+0

這是有點不直觀,至少對我來說,但作品像一個魅力(順便說一句,我剛剛使用「.b div」,這也起作用)。 – EhudFisher 2012-01-12 09:35:13

+0

很奇怪,'.b div'不應該工作,因爲你的.b文件中沒有div,至少在你的例子中沒有。無論如何,特異性是CSS中一個非常重要的概念,我建議你閱讀它。 – 2012-01-12 09:58:16

3

您的選擇器是錯誤的。

而不是

a. div { 

div.a { 

(選擇任意分度類的 「一」)

而不是

b { 

(將實際儘量風格所有種b元素)

使用

.b { 

(其表示選擇由所述 「B」 類)

EDIT(響應於響應所定義的任何東西)

要選擇「a」類的div內的所有div,請使用以下選擇器: -

div.a div 
+0

我的選擇(代碼)都很好,但我在這個問題上提出的顯然是錯誤的。我的選擇器是「.b」和「.a div」。對不起,我會編輯原文。但是,該解決方案對我無效。 什麼即時嘗試選擇不是所有的div與一個類,但所有的div下一個元素的類是。 – EhudFisher 2012-01-12 09:02:37

+0

爲您編輯一個新的選擇器,先生。 – 2012-01-12 09:23:34

0

特異性得分由CSS編譯器計算,聲明中的最高分數獲得修改的內容。> 1,如果相應類型特異性的在代碼存在
($) - - > 0,如果相應類型的特異性沒有按

inline id-element class-element no.-of-elements 
    $   $    $    $ 

($):

分數一般是由該順序計算「T存在於代碼

所以這裏
.a div得分將是0012
.b得分將是0011
顯然,第一個贏得因此它的修改內容,即使.b試圖重寫.a div

(OR)

可以使用!important在聲明最後確定申報