body和html到底有多高&&瀏覽器的背景色問題
在此之前我一直以為在瀏覽器裡html預設和瀏覽器視窗等高,而body預設和html等高,現在想想自己為什麼會這麼想,主要是因為這個:
body{
background:blue;
}
當我這麼幹的時候,得到了這個結果:
看,body的背景色佔據了整個瀏覽器視窗,這樣想來body撐開瀏覽器什麼的也不是匪夷所思了,但書上告訴我們正常情況的高度是不會繼承的,那麼這個body到底有多高呢?我們新增一行:
body{
background:blue;
border:5px solid black;
}
神奇的事情發生了:
啥???body沒高度??那瀏覽器的顏色是哪裡來的?????
還沒完,還有更神奇的事情,一起來看下:
在以上程式碼的基礎上,我添加了這樣兩行style:
html {
background:yellow;
}
它又變成黃色了。。。。。
嗯,這樣想的話,難道是html標籤撐開了視窗???
一探究竟:
html {
background:yellow;
border:5px solid red;
}
然後我們看到html彷彿有點高度??
當然不,這是body的外邊距啦2333讓我們去掉這個東西:
body {
background:blue;
margin :0;
}
於是真相是:
魔性的事情出現了,html原來也是沒有高度的hhhhh。
不過話說回來,這不剛好和我們寬度預設繼承父級和瀏覽器視窗等寬,而高度預設不繼承為0相吻合嗎?所以html和body標籤預設高度為0這點,是毋庸置疑的。
那麼問題來了,body和html並沒有高度,那麼滿屏的黃色和藍色是怎麼顯示出來的?
我覺得這和瀏覽器本身的機制有關,我們可以認為瀏覽器是一個會“吸收”顏色的東西,當我們給body設定顏色時,雖然body沒有高,但是瀏覽器底板需要顏色,它看到了body的顏色
,就想要拿來變成自己的,然後它把自己搞成了body設定的那個blue,當我們給html也設定了一個顏色後,瀏覽器發現,html好像離我更近啊,於是就就近渲染了html標籤的背景色yellow給自己.
這樣一來,我們看到的瀏覽器視窗又變成黃色了。
因此,我們所看到的那個背景色,既不屬於body標籤,也不屬於html,它屬於更底層的那個底板,是瀏覽器視窗本身吸收了body和html標籤中更靠近自己的那個後,渲染出來的瀏覽器視窗底板的顏色。