高度塌陷:父盒子的高度由子盒子撑开,由于子盒子浮动之后,造成父盒子的高度为0的情况。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box1 {
height: 300px;
width: 100px;
background-color: #51b7ec;
float: left;
}
.box2 {
height: 200px;
width: 100px;
background-color: red;
float: left;
}
</style>
</head>
<body>
<div class="outer">
<div class="box1"></div>
<div class="box2"></div>
</div>
</body>
</html>
结果:
解决方案:
1、w3c提供的一种方法:内墙法
<div class="outer">
<div class="box1"></div>
<div class="box2"></div>
<div class="clearfix" style="clear: both"></div><!--没有实际价值,就是为了清除浮动-->
</div>
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
/*方式:w3c组织所推荐的一种方式*/
.outer .clearfix {
clear: both;
}
.box1 {
height: 300px;
width: 100px;
background-color: #51b7ec;
float: left;
}
.box2 {
height: 200px;
width: 100px;
background-color: red;
float: left;
}
</style>
</head>
<body>
<div class="outer">
<div class="box1"></div>
<div class="box2"></div>
<div class="clearfix"></div><!--没有实际价值,就是为了清除浮动-->
</div>
</body>
</html>
2、给父盒子添加overflow: hidden;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
/*解决高度塌陷的第二种方式: overflow:hidden*/
.outer {
overflow: hidden;
}
.box1 {
height: 300px;
width: 100px;
background-color: #51b7ec;
float: left;
}
.box2 {
height: 200px;
width: 100px;
background-color: red;
float: left;
}
</style>
</head>
<body>
<div class="outer">
<div class="box1"></div>
<div class="box2"></div>
</div>
</body>
</html>
3、其他优秀的处理方案(推荐使用的),双伪元素浮动:
在父盒子的class中添加clearfix,复制以下代码即可
.clearfix:before, .clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
完整代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.clearfix:before, .clearfix:after {
content: "";
display: table;
}
.clearfix:after {
clear: both;
}
.clearfix {
*zoom: 1;
}
.box1 {
height: 300px;
width: 100px;
background-color: #51b7ec;
float: left;
}
.box2 {
height: 200px;
width: 100px;
background-color: red;
float: left;
}
</style>
</head>
<body>
<div class="outer clearfix">
<div class="box1"></div>
<div class="box2"></div>
</div>
</body>
</html>
结果: