不二如是 发表于 2020-10-19 15:58:19

055 - 终于有人可以把BFC给讲清楚了

本帖最后由 不二如是 于 2020-11-3 08:51 编辑

上一集: 054 - 不畏浮云遮望眼



哈哈,废话不多说了,#敲黑板时刻!{:10_281:}



在线视频:传送门



课程思维导图


猛戳http://xxx.fishc.com/forum/201803/31/110408mxpszds1j1xxxahm.gif超清



这节课的重点就是 BFC(Block formatting context)直译为"块级格式化上下文"。

它是一个独立的渲染区域,只有块级盒子(Block-level box)参与(后续有解释)。

规定了内部的 Block-level Box 如何布局,并且与这个区域外部毫不相干。

通俗理解就是小甲鱼老师说的“平行宇宙”。

BFC 其实就是 css 布局中的一个概念,是一块区域,一个环境。

触发条件:


[*]根元素,即 HTML 元素
[*]float 的值不为 none
[*]overflow 的值不为 visible
[*]display 的值为 inline-block、table-cell、table-caption
[*]position 的值为 absolute 或 fixed

其中最常用的方式就是设置 overflow,也是课程中小甲鱼老师惯用的生成 BFC 方式。

通过 BFC,我们可以做这些事:


[*]自适应两栏布局
[*]可以阻止元素被浮动元素覆盖
[*]可以包含浮动元素——清除内部浮动
[*]分属于不同的 BFC 时可以阻止 margin 重叠

代码大家自己看视频,一定要手动敲!

重点:

BFC 就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
看懂这句话,基本上就理解了 BFC 。

小甲鱼老师课程中举的例子,都是因为 BFC 内部的元素和外部的元素绝对不会互相影响。

因此, 当 BFC 外部存在浮动时,它不应该影响 BFC 内部 Box 的布局,BFC 会通过变窄,而不与浮动有重叠。

同样的,当 BFC 内部有浮动时,为了不影响外部元素的布局,BFC 计算高度时会包括浮动的高度。

避免 margin 重叠也是这样的一个道理。



课后作业,完成了吗?

传送门



http://xxx.fishc.com/forum/201803/20/101934b3igkgm9hgbgz0ck.gif

下一集:056 - 苟日新,日日新,又日新



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢本系列学习笔记,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )

LuLD 发表于 2020-10-19 16:47:15

Mark

QBR 发表于 2024-11-26 10:52:14

学习了{:10_333:}。
但我有点笨,理解了又好像没理解。在我现在看来我建一个新的BFC的目的是为了避免另一个BFC对布局的影响,为了使某块内容不受别的BFC影响,所以要给这块内容也处于BFC内。
页: [1]
查看完整版本: 055 - 终于有人可以把BFC给讲清楚了