今天看到一个CSS样式:html{height:100%},感觉很奇怪,html为什么要设置height:100%,html不就是整个窗口吗?我想是这样。然后把html去掉,只留下height:100%的body,出现如下场景:大部分登录界面都上移了!!!解释:我知道一个事实:一个div块级元素不会主动为它设置宽高,浏览器会为其分配可以使用的最大宽度(比如全屏宽度),但它不负责对于高度的赋值,块级元素的高度是通过堆叠子元素来支持的。那么,html和body标签的高度也是通过子元素的堆叠来支持的。另外,元素高度百分比需要遍历父标签找到一个固定的高度才能工作。如果中间有一个高度是auto或者没有设置height属性,那么高度百分比就不起作用了。此时的情况是父元素的高度依赖子元素搭建高度,子元素依赖父元素的固定高度发挥作用,相互依赖,但不能相互依赖,死循环。那么如何解决这个问题,可以先设置子元素的高度,可以解决;但是如果子元素必须依赖于父元素的高度怎么办?从上面的html代码可以看出,div的父元素是body,body的父元素是html。throughheight:100%,逐层往上走,找到最顶层得到固定高度。于是同时出现html和body设置height:100%,html谁高谁大?从上面的事实,我们知道浏览器负责分配块级元素的宽度,那么浏览器肯定也能分配高度(只是没做),那么浏览器本身就有宽度和高度,设置html的height:100%,可以得到浏览器的固定高度后,后面的body和div也会有依赖。转载自:https://www.cnblogs.com/huash...
