<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.main {
height: 100%;
position: absolute;
}
.float {
width: 50%;
height: 50%;
float: left;
}
.red {
background-color: red;
}
.green {
background-color: green;
}
.blue {
background-color: blue;
}
.yellow {
background-color: yellow;
}
</style>
</head>
<body>
<div class="main">
<div class="float red"></div>
<div class="float green"></div>
<div class="float blue"></div>
<div class="float yellow"></div>
</div>
</body>
</html>
打开浏览器,页面是铺满的
当我把.main这个类中的position:absolute删除之后,页面消失了,变成了一片空白,为什么会这样呢?打开浏览器调试器,思考了一下
原来,由于我的盒子都设置了浮动,脱离了文档流,此时的body盒子的高度本来就是0,你的.main设置了100%也就相当于0了,但是加上position:absolute之后,情况就改变了,虽然此时body的高度还是0,因为没有内容撑开,所以还是0。但此时.main这个div是有高度的!!!原因就在:于:设置了绝对定位的元素,给该元素的宽高设置的百分比是相对于有设置定位属性的父级元素来计算的,但是如果它的父级元素中没有人设置了定位,就默认以浏览器上屏幕高度来计算,具体应该是以window.innerHeight(谷歌浏览器下测试的)这个值为参照计算的!!!