如果我没有设置绝对定位的话,不给html,body设置{height:100%,weight:100%}时,单独的给下面包裹的div设置height,width:50%时,div的高度是有里面的字体撑开的,它的高度不是窗口的一半。
按照我们理解的那样,以百分比的形式给某个元素设置高度时,它是继承上一级父元素的高度。
可是absolute,在以body做爹爹的时候,body的高度也是没有设定的呀,为什么就可以占满屏幕的一半呢?
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
div {
height: 50%;
width: 50%;
background: red;
color: white;
position: absolute;
}
</style>
</head>
<body>
<div>
你是最棒的哦!
</div>
</body>
</html>
如图:
假如换成了position:relative的话,或者去掉absolute的话,
没想明白,body既然没有设置高度,那么absolute是怎么做到占据窗口的一半呢?
MDN上对于absolute的解释
因为你这里div的祖先元素(body和html)全是static定位,所以这个div只能相对于初始包含块定位,其大小就是视口viewpoint的大小,
height:50%
则会占据整个视口高度的1/2。