![](/img/trans.png)
[英]What is the difference between applying css rules to html compared to body?
[英]Difference in applying CSS to html, body, and the universal selector *?
當應用於同一個 HTML 文檔時,這三個規則有何不同?
html {
color: black;
background-color: white;
}
body {
color: black;
background-color: white;
}
* {
color: black;
background-color: white;
}
html { color: black; background-color: white; }
此規則將顏色應用於html
元素。 html
元素的所有后代都繼承其color
(但不是background-color
),包括body
。 body
元素沒有默認的背景顏色,這意味着它是透明的,所以html
的背景會一直顯示,除非你為body
設置了背景。
雖然html
的背景是在整個視口上繪制的,但是html
元素本身並不會自動跨越整個視口的高度; 背景只是簡單地傳播到視口。 有關詳細信息,請參閱此答案。
body { color: black; background-color: white; }
此規則將顏色應用於body
元素。 body
元素的所有后代都繼承其color
。
類似於html
的背景如何自動傳播到視口, body
的背景將自動傳播到html
,直到並且除非您也為html
設置背景。 請參閱此答案以獲取解釋。 因此,如果您只需要一個背景(在通常情況下),那么使用第一條規則還是第二條規則不會有任何實際區別。
但是,您可以將html
和body
背景樣式與其他技巧結合起來,以獲得一些漂亮的背景效果,就像我在這里所做的那樣。 有關如何操作,請參閱上面的鏈接答案。
* { color: black; background-color: white; }
此規則將顏色應用於每個元素,因此這兩個屬性都不是隱式繼承的。 但是您可以輕松地用其他任何規則覆蓋此規則,包括上述兩條規則中的任何一條,因為*
在選擇器特異性方面實際上沒有意義。
因為這打破繼承鏈完全對任何屬性,通常是繼承,如color
,在設置這些屬性*
規則被認為是不好的做法,除非你有一個很好的理由來打破繼承這種方式,涉及中斷繼承(大多數用例需要您只需為一個元素執行此操作,而不是所有元素)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.