重新认识布局:html和body元素
本文首发于知乎:https://www.zhihu.com/people/xiao-chong-10-60
在网页开发中,html和body是2个非常特殊的元素。其中,html叫根元素,看下面几个问题:
1.如果body里什么东西都没有,那么html和body的宽高是多少?
答案:2者宽是浏览器可视窗口的宽,高是0。
2.如果body里什么东西都没有,body的高是0,那么给body设置背景色,背景色多大?
答案:如果一个div的高度是0,设置背景色,不会有任何效果。但是,body的背景色会占满浏览器可视窗口。
3.html和body是BFC吗?
答案:html是BFC,body不是。
一个很明显的例子,给body设置margin-top,html不会塌陷(margin重叠或者合并)。给body里的div设置margin-top,body会塌陷。
4.在js里怎么获取html和body
// 1.获取body 元素 var bodyEle = document.body; // 2.获取html 元素 var htmlEle = document.documentElement;
5.监测页面滚动,可以在html或者body上添加scroll事件吗?
不可以,参见以下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
background-color: pink;
height: 1000px;
}
</style>
</head>
<body>
<script>
//无效
document.body.addEventListener('scroll', function (e) {
console.log(this.scrollTop);
console.log(window.pageYOffset);
})
//无效
document.documentElement.addEventListener('scroll', function (e) {
console.log(this.scrollTop);
console.log(window.pageYOffset);
})
document.addEventListener('scroll', function (e) {
console.log(window.pageYOffset);
})
window.addEventListener('scroll', function (e) {
console.log(window.pageYOffset);
})
</script>
</body>
</html>

浙公网安备 33010602011771号