BFC——块格式化上下文
MDN:块格式化上下文(Block Formatting Context,BFC) 是 Web 页面的可视 CSS 渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
主要跟元素定位以及元素之间的关系有关。
什么是 BFC ?
BFC 是一个独立渲染区域,通俗一点来说,可以把 BFC 看作房间,房间内的人与房间外的人互不影响(当然现实中不是这样啦,过于为所欲为可能会被邻居投诉的)。
BFC 有以下特性(布局规则):
内部元素按垂直方向从上到下依次排列。
123同一 BFC 内的相邻元素之间会发生 margin 重叠。
下边距为 10px上边距为 20px,叠过了上方元素的下边距BFC 内的浮动元素可以撑开盒子(可以用来清除浮动)。
浮动子元素BFC 之间不会重叠(这条特性重点在于 float 元素属于 BFC,故 BFC 不会与 float 元素发生重叠)。
泾渭分明
触发 BFC 的方式
- 根元素
<html> float属性取值非noneposition属性取值为absolute或fixeddisplay属性取值为inline-block、flex(以及inline-flex)、grid(以及inline-grid)、flow-root以及一大堆跟表格有关的值(可见块格式化上下文)overflow属性取值不为visible- ……(不常用)
用法
防止元素被浮动元素覆盖
浮动元素盖在上面
与浮动元素划清界限清除浮动
父元素高度为 0 看不见
父元素高度被子元素撑开了防止垂直方向 margin 重叠
父子元素
子元素的上边距被父元素吞掉了
父元素变为 BFC 后就不会吞掉子元素的边距了兄弟元素
下边距为 10px上边距为 20px,叠过了上方元素的下边距
下边距为 10px,外套一个 BFC,与下方元素隔开,边距不再重叠上边距为 20px