BFC 的简单理解

BFC 的扩写是 Block formatting contexts (块级格式化上下文),它看不见摸不着但对 CSS 盒模型有影响。
标准里对 BFC 的描述是:

Floats, absolutely positioned elements, block containers (such as inline-blocks, table-cells, and table-captions) that are not block boxes, and block boxes with 'overflow' other than 'visible' (except when that value has been propagated to the viewport) establish new block formatting contexts for their contents.

同时提到一个前端常见的 collapse 现象:

Vertical margins between adjacent block-level boxes in a block formatting context collapse.

所以笔者是这么理解 BFC 的:

  1. 浮动元素、绝对定位元素、非块盒的块容器(inline-block、table-cell、table-caption 元素)、overflow 不为 visible 的元素会创建 BFC

  2. 同一个 BFC 里,两个相邻的块级盒的垂直外边距会 collapse(塌陷)

也就是说不同的 BFC之间就会消除相邻元素的 collapse,以下是可创建 BFC 的条件:

  • div: float:left | right

  • div: display:inline-block | table-cells | table-captions

  • div: position:absolute

  • div: overflow:hidden | scroll | auto | paged-x | paged-y | paged-x-controls | paged-y-controls | fragments

这里写了个测试 collapse 的 demo,经测试发现:

  • “同一个 BFC 里,两个相邻的块级盒”可以指相邻元素如 div-2 和 div-3,也可以指父元素和子元素如 div-1 和 div-2 或 3

  • 设置 overflow 时,只能让 div-1 与它的子元素 div-2 或 3 消除 collapse,而不能让 div-1 与相邻元素 div-4 消除 collapse

参考:BFC 的文档
原文:BFC 的简单理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值