BFC 块格式化上下文

BFC 块格式化上下文

概念

块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。(MDN)

一个BFC的范围包含创建该上下文元素的所有子元素,但不包括创建了新BFC的子元素的内部元素。
这从另一方角度说明,一个元素不能同时存在于两个BFC中。
因为如果一个元素能够同时处于两个BFC中,那么就意味着这个元素能与两个BFC中的元素发生作用,就违反了BFC的隔离作用。(CSS中重要的BFC)

创建方式

下列方式会创建块格式化上下文:

  1. 根元素( <html> )
  2. 浮动元素( float: left/right )
  3. 绝对定位元素( position: absolute/fixed )
  4. overflow ( overflow: auto/hidden/scroll)
  5. 弹性元素( 元素本身或父元素为 display: flex/inline-flex )
  6. 网格元素( 元素本身或父元素为 display: grid/inline-grid )
  7. 行内块元素( display: inline-block )
  8. display: flow-root( 创建一个行为类似于根元素的元素 )
  9. 表格相关( display: table-cell/table-caption/inline-table/table/table-row/table-row-group/table-header-group/table-footer-group )
  10. contain: layout/content/paint( contain )
  11. 多列容器( column-count 或 column-width 不为 auto,column-span:all )

实例

  1. 阻止元素被浮动元素覆盖

一个正常文档流的block元素可能被一个float元素覆盖,挤占正常文档流,因此可以设置一个元素的float、display、position值等方式触发BFC,以阻止被浮动盒子覆盖。

在这里插入图片描述

点击查看阻止元素被浮动元素覆盖实例

github.io如果打不开看这里实例源代码自己跑一下

  1. 可以包含浮动元素

通过改变包含浮动子元素的父盒子的属性值,触发BFC,以此来包含子元素的浮动盒子。

在这里插入图片描述

点击查看可以包含浮动元素实例

github.io如果打不开看这里实例源代码自己跑一下

  1. 阻止相邻元素的margin合并

属于同一个BFC的两个相邻块级子元素的上下margin会发生重叠。
所以当两个相邻块级子元素分属于不同的BFC时可以阻止margin重叠。
这里给任一个相邻块级盒子的外面包一个div,通过改变此div的属性使两个原盒子分属于两个不同的BFC,以此来阻止margin重叠。

在这里插入图片描述

点击查看阻止相邻元素的margin合并实例

github.io如果打不开看这里实例源代码自己跑一下

参考

块格式化上下文

CSS中重要的BFC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值