一、BFC
没有的话会引起什么问题:
1、上下相邻box的margin会合并最其中较大值
2、高度塌陷
3、父子元素margin塌陷(给子元素设置margin-top,会使其作用到父元素上)
触发条件:
1、根元素
2、overflow:hidden
3、display:inline-block, flex
4、float:left、right
5、position:absolute、fixed
特性:
1、不会与float盒子相互覆盖
2、强迫float子元素参与高度计算,解决高度塌陷
3、解决上下box的margin合并问题
二、高度塌陷
解决方法:
1、给父元素设置具体高度,这样会破坏自适应性
2、父元素设置为一个BFC
3、给所有的浮动元素后面紧跟着写一个空元素,并设置属性clear:both
<style>
*{
margin: 0;
padding: 0;
}
ul{
border: 5px solid red;
}
li{
list-style: none;
width: 300px;
height: 100px;
float: left;
border: 1px solid blue;
}
div{
/* 给所有浮动标签后添加div并设置属性clear: both; */
clear: both;
}
</style>
</head>
<body>
<ul>
<li></li>
<div></div>
<li></li>
<div></div>
<li></li>
<div></div>
<li></li>
<div></div>
<li></li>
<div></div>
<li></li>
<div></div>
</ul>
</body>
4、伪元素清除
<style>
* {
margin: 0;
padding: 0;
}
ul {
border: 5px solid red;
}
ul::after {
/* 添加内容 */
content: "";
/* 转块元素 */
display: block;
/* 清除浮动 */
clear: both;
visibility: hidden;
}
li {
list-style: none;
width: 300px;
height: 100px;
float: left;
border: 1px solid blue;
}
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</body>