2012-08-15 308 views
1

似乎我被困住了。 爲什麼下面的代碼顯示12px的消息,但不是50px?是不是class1有 如何修復它,如果我不允許更改*屬性?即使!重要也無濟於事。html css * {...}:無法更改字體大小

<html> 
    <head> 
     <style type="text/css"> 
      * 
      { 
       font-size : 12px 
      } 

      .class1 
      { 
       font-size : 50px; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="class1"> 
      <span>why it is not 50px font size?</span> 
     </div> 
    </body> 
</html> 
+0

不知道爲什麼你不能更改星形選擇器;這是糟糕的代碼,並且很明顯會導致問題。你不能改變它的原因是什麼? – Spudley 2012-08-15 19:36:56

+0

我正在開發項目的擴展(fork)。我最好不要觸摸另一個人寫的css文件。 – Haradzieniec 2012-08-16 12:13:58

回答

12

這是因爲*還會選擇你<div><span>標籤。

所以*在這種情況下更具體,因此具有優先權。

.class1 span 
{ 
    font-size : 50px; 
} 

以上是可行的。

+1

或者使用body {}而不是* {} – 2012-08-15 08:18:19

1

這應該工作

div.class1 span 
{ 
    font-size : 50px; 
} 

*將選擇div中的跨度。作爲子元素將刪除<span>將工作。或明確的目標。

+0

謝謝。我知道。有沒有更好的主意?我的意思是一旦我包含那個包含*的bad.css文件,就會破壞很多員工,所以我必須在很多div中重寫很多span。有沒有更好的解決方案來「取消」* {font-size:12px;}? – Haradzieniec 2012-08-15 08:02:05

+0

您可以覆蓋該值,但無法取消設置。我看到覆蓋該值沒有問題,您甚至可以使用以逗號(,)分隔的多個選擇器。針對不同的標籤。 – 2012-08-15 08:03:32

+1

你可以做'.class1 * {font-size:inherit; ''但我懷疑這也可能導致問題。 – steveax 2012-08-15 08:05:36

1

*將包括<span>,所以你可以給span一個id或一個類,並應用css規則。或者不喜歡它:

.class1 span {font-size:50px;} 
1

的選擇*是一個包羅萬象的(意爲它選擇一切

因此,對於你span被選中,你需要一個更具體的選擇:

.class1 span 

應該可以工作,但您也可以選擇它以更具體:

div.class1 span 

或者你可以添加一個類跨度本身並與

span.class2 

:)

1

選擇,或者你可以使用重要

.class1 {font-size : 50px !important;} 

的工作!例如:

http://jsfiddle.net/gWQeZ/

+0

試過了。不起作用。 – Haradzieniec 2012-08-15 08:46:23

+0

使用'!important'應始終被視爲最後的手段。如果你需要它,那麼通常意味着你不瞭解CSS優先級,或者你的CSS中有其他地方需要修復。 – Spudley 2012-08-15 19:32:28

+0

或者如果您使用的是自動生成CSS的第三方腳本,並且您需要覆蓋它,或者如果您需要快速修復或者如果問這個問題的人對CSS沒有足夠的瞭解。這裏的目的是提供不同的解決方案,然後他可以選擇適合他的任何方法。我同意你的評論!重要的應該是最後的手段 – Razmig 2012-08-16 05:58:36