2014-10-03 110 views
2

我有以下html5代碼。我預計文字商業廣告的樣式爲斜體,顏色爲黃色。但它是紅色的。拋開元素的風格

只能將某些樣式應用於預留元素嗎?

CSS:

aside h4 { 
    font-style: italic !important; 
    color: yellow; 
} 
article h4 { 
    font-style: normal; 
    color: red; 
} 

HTML:

<div> 
    <article> 
     <aside> 
      <h4>Business Ads</h4> 
     </aside> 
    </article> 
</div> 
+0

這是一個特殊性問題:應用第一條規則*,但第二條規則(它覆蓋第一條規則中的任何非重要樣式)也是如此。 – Jeroen 2014-10-03 11:41:21

+0

嗨,你有沒有找到解決你的問題?請接受你最喜歡的答案。 – 2014-10-08 10:55:50

回答

3

這是CSS具體工作方式的結果。這裏的頁面:

https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity

提供了一個很好的解釋。在這種情況下,由於兩個樣式聲明在較大的元素中引用h1,所以它們具有相同的特性,並且最新的聲明樣式優先。你可以用!important重寫它,但它通常被認爲是糟糕的風格,因爲它打破了CSS的「級聯」特性。相反,使用一個更具體的選擇:

article aside h1 { 

    //style goes here 

} 
2

你重寫規則,你已經設置你的CSS的方式。兩個規則都以相同的元素爲目標,因此第二個規則將覆蓋第一個規則並應用於該元素。

例如,如果你的oppossite順序設置你的規則是這樣的:

article h4 { 
    font-style: normal; 
    color: red; 
} 

aside h4 { 
    font-style: italic !important; 
    color: yellow; 
} 

第二個會APLY和h4將是黃色的斜體

所以,如果你有一個h4也在裏面article您可以使用此:

article aside h4 { 
    font-style: italic !important; 
    color: yellow; 
} 
article h4 { 
    font-style: normal; 
    color: red; 
} 

DEMO

2

您必須對選擇器更具體,以便將其分配的規則覆蓋「默認」規則。您可以刪除!important,當您可以使用其他技術時,這不是覆蓋現有規則的最佳方式。

DEMO

article aside h4 { 
    font-style: italic; 
    color: yellow; 
} 
article h4 { 
    font-style: normal; 
    color: red; 
} 
0

您所指定的相同H4元素,但你有不同的風格 ,最後一個是讀給了它。只需刪除

article h4 { 
    font-style: normal; 
    color: red; 
} 

並刪除第一個選擇器中的!important。 如果您在一篇文章中或標籤旁邊定位了不同的h4標籤,您可以做的是將類或跨度放在它們上面。