1. 程式人生 > >body和html到底有多高&&瀏覽器的背景色問題

body和html到底有多高&&瀏覽器的背景色問題

在此之前我一直以為在瀏覽器裡html預設和瀏覽器視窗等高,而body預設和html等高,現在想想自己為什麼會這麼想,主要是因為這個:

body{
    background:blue;
}

當我這麼幹的時候,得到了這個結果:
css1
看,body的背景色佔據了整個瀏覽器視窗,這樣想來body撐開瀏覽器什麼的也不是匪夷所思了,但書上告訴我們正常情況的高度是不會繼承的,那麼這個body到底有多高呢?我們新增一行:

body{
    background:blue;
    border:5px solid black;
}

神奇的事情發生了:
css2
啥???body沒高度??那瀏覽器的顏色是哪裡來的?????
smile


還沒完,還有更神奇的事情,一起來看下:
在以上程式碼的基礎上,我添加了這樣兩行style:

html {
    background:yellow;
}

它又變成黃色了。。。。。
css3
嗯,這樣想的話,難道是html標籤撐開了視窗???
一探究竟:

html {
    background:yellow;
    border:5px solid red;
}

然後我們看到html彷彿有點高度??
css4
當然不,這是body的外邊距啦2333讓我們去掉這個東西:

body {
    background:blue;
    margin
:0
; }

於是真相是:
css5

魔性的事情出現了,html原來也是沒有高度的hhhhh。

不過話說回來,這不剛好和我們寬度預設繼承父級和瀏覽器視窗等寬,而高度預設不繼承為0相吻合嗎?所以html和body標籤預設高度為0這點,是毋庸置疑的。
那麼問題來了,body和html並沒有高度,那麼滿屏的黃色和藍色是怎麼顯示出來的?

我覺得這和瀏覽器本身的機制有關,我們可以認為瀏覽器是一個會“吸收”顏色的東西,當我們給body設定顏色時,雖然body沒有高,但是瀏覽器底板需要顏色,它看到了body的顏色
,就想要拿來變成自己的,然後它把自己搞成了body設定的那個blue,當我們給html也設定了一個顏色後,瀏覽器發現,html好像離我更近啊,於是就就近渲染了html標籤的背景色yellow給自己.
這樣一來,我們看到的瀏覽器視窗又變成黃色了。

因此,我們所看到的那個背景色,既不屬於body標籤,也不屬於html,它屬於更底層的那個底板,是瀏覽器視窗本身吸收了body和html標籤中更靠近自己的那個後,渲染出來的瀏覽器視窗底板的顏色。