BFC是什么
BFC 即 Block Formatting Contexts (块级格式化上下文) 具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。 通俗理解 BFC 就是一个封闭的大箱子,箱子内部的元素无论做什么操作,都不会影响到外部。
触发 BFC 的条件
只要元素满足下面任一条件即可触发 BFC 特性
- html 根元素
- float 浮动元素:float 除 none 以外的值
- 绝对定位元素:position (absolute、fixed)
- display 为 inline-block、table-cells、flex
- overflow 除了 visible 以外的值 (hidden、auto、scroll)
- ......
BFC 特性
- 内部box会在垂直方向,一个接一个地放置。
- Box垂直方向的距离由(margin)决定,在一个BFC中,两个相邻的块级盒子的垂直外边距会产生重叠。
- 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)
- 形成了BFC的区域不会与float box重叠
- 计算BFC高度时,浮动元素也参与计算
简单BFC使用
1、利用 特性4 可实现左图右文之类的效果
<img src='image.png'>
<p>我是超长的文字<p>
img {
float:left
}
p {
overflow:hidden
}
2、利用 特性5 可以解决浮动元素造成的父元素高度塌陷问题:
<div class='parent'>
<div class='float'>浮动元素</div>
</div>
.parent {
overflow:hidden;
}
.float {
float:left;
}
更多 BFC 的理解 传送门