• 重新认识布局: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>
    

      

  • 相关阅读:
    深入类的方法
    泛型集合
    深入C#数据类型
    深入.net框架
    错题
    详解Python Graphql
    深入理解分布式调度框架TBSchedule及源码分析
    30分钟闲置服务器建站(gitlab为例)
    Webpack开发指南
    mybatis-generator
  • 原文地址:https://www.cnblogs.com/xiaochongchong/p/14930708.html
Copyright © 2020-2023  润新知