2008-12-18 96 views
2

在一個樣式表,我有:* HTML體在CSS樣式表中的含義是什麼?

* HTML BODY 
    { 
     padding-right: 0px; 
     padding-left: 0px; 
     padding-bottom: 25px; 
     padding-top: 190px; 
    } 
    * HTML #maincontent 
    { 
     width: 100%; 
     height: 100%; 
    } 

我知道一個。意味着class和#表示應用於id,但是* HTML表示什麼?

回答

11

*是通用選擇器,因此匹配任何元素。例如

P * { } 

匹配作爲P標籤

* HTML 

的孩子應該沒什麼意思,因爲HTML不可能是任何東西(定義)到兒童的任何元素。它的使用,因爲IE(編輯,至少IE 5 - 6 - 感謝RoBorg!)忽略*,因此它可以用來定義IE特定的風格:

HTML { 
// Normal styles 
} 

* HTML { 
// IE Specific styles 
} 

http://www.peachpit.com/articles/article.aspx?p=358552

+0

很酷,謝謝..我沒寫過,但被賦予在模板中使用,只是想明白爲什麼在盲目添加它之前使用它。 – Gribbler 2008-12-18 15:14:59

-2

對於第二個片段,由於*匹配任何元素項目是多餘的。它看起來像是在那裏提醒作者樣式的意圖 - 如果他在第二個片段中改變了某些內容,請確保他檢查了#maincontent元素以確保它看起來正確。

+0

這不是多餘的。它應該表示HTML是其他元素的孩子。根據大多數瀏覽器的解釋,情況並非如此。但在IE中HTML是一些神祕的超級元素的孩子。 – recursive 2008-12-18 15:30:14

+0

糟糕:出於某種原因,我正在閱讀那些好像他們之間有逗號的人! :( – 2008-12-18 17:06:08

4

*指任何元件
HTMLBODY意味着<html><body>元件。

因此* HTML BODY表示HTML元素內部的任何元素內的body元素。

這實際上是一個瀏覽器黑客:一些瀏覽器會匹配它,有些不會(IE瀏覽器匹配,Firefox不知道,其他人不確定)。

0

嗯,這是一個真的很糟糕的CSS選擇器語句,就是這樣。讓我打破它給你:

[all elements] (sub-selection) [HTML] [BODY] 

也就是說,它經過的所有元素,找到HTML元素,那麼BODY內。問題在於,body元素始終只有,而#maincontent或者應該是BODY或位於其中。期。正如Joel所說,它可能會提醒設計師,但我不太確定這一點。對我而言,該代碼是一個確定的「代碼味道」!分別

#maincontent { 

你應該重寫你的CSS選擇:

body { 

和。

1

人們在樣式表規則中添加諸如*,html或body(或者在這種情況下,全部爲3)的選擇器的一個原因是增加了選擇器特定性計算。當然,HTML永遠是別的孩子,所以* HTML是一種特定的IE瀏覽器黑客,但有一個人之所以會添加HTML或身體聲明:

例如:

html p { font-color: red } 
p { font-color: blue } 

html標記中的段落(如所有這些段落)比段落更具體,所以無論樣式表中這些聲明的順序如何,字體顏色都將爲紅色。如果第三條規則使用html body p,則優先。

它比使用!更重要一點,但如果可能的話,最好關閉更多語義標籤。

相關問題