BFC理解
块级格式化上下文,指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关
现象
一个盒子不设置height,当内容元素都浮动时,无法撑起自身,这个盒子没有形成BFC
如何创建BFC
- 方法一:float的值不是none
- 方法二:position的值不是static或者relative
- 方法三:display的值是inline-block、flex或者inline-flex
- 方法四:overflow:hidden
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.father{
/*float: left;*/
/*position: absolute;*/
/*display: inline-block;*/
overflow: hidden; /*最好的方式*/
}
.son{
width: 300px;
height: 300px;
background-color: blue;
float: left;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
<div class="son"></div>
<div class="son"></div>
</div>
</body>
BFC其他作用
- BFC可以取消盒子的margin塌陷
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.father{
width: 200px;
height: 300px;
background-color: blueviolet;
overflow: hidden; /*解决塌陷*/
}
.son{
width: 100px;
height: 100px;
background-color: blue;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
- BFC可以组织元素被浮动元素覆盖
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.son{
width: 200px;
height: 200px;
background-color: blueviolet;
float: left;
}
.son-last{
width: 200px;
height: 300px;
background-color: brown;
overflow: hidden; /**/
}
</style>
</head>
<body>
<div>
<div class="son"></div>
<div class="son"></div>
<div class="son-last"></div>
</div>
</body>