对BFC的简单讨论

一、什么是BFC

BFC,即块级格式化上下文(Block Fromatting Context)

W3C对BFC的定义如下:

浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。

换句话说,要创建BFC需满足一下一个或多个条件:

1、float的值不是none。

2、position的值不是static或者relative。

3、display的值是inline-block、table-cell、flex、table-caption或者inline-flex

4、overflow的值不是visible

可能还是有点抽象,不过从我个人的粗浅见解来看,具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。(即相同视角下的不同次元???)

通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何翻江倒海,都不会影响到外部。

二、BFC的特性及应用

1. 同一个 BFC 下外边距会发生折叠

BFC可能造成外边距折叠,也可以利用它来避免这种情况。

请看下面这个例子

从效果上看,因为两个 div 元素都处于同一个 BFC 容器下 (这里指 body 元素) 所以第一个 div 的下边距和第二个 div 的上边距发生了重叠,所以两个盒子之间距离只有 100px,而不是 200px。这并不是 CSS 的 bug,我们可以理解为一种规范,如果想要避免外边距的重叠,可以将其放在不同的 BFC 容器中,从而避免这种情况。

比如改成这样


2.BFC 可以包含浮动的元素(清除浮动)

话不多说直接举例


为没有设置固定高度的父元素添加overflow:hidden

这样,不会出现因为子元素的浮动而使父元素高度坍塌的后果

3. BFC 可以阻止元素被浮动元素覆盖

此特性一般可以应用于消除文字围绕效果,只需要为有文字的兄弟元素也创建BFC即可

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,709评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,472评论 1 45
  • 先前在学习CSS float时,有同学提到了BFC这个词,作为求知好问的好学生,哪里不懂查哪里,那么今天就来研究一...
    这名字真不对阅读 11,604评论 3 19
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 4,599评论 0 2
  • 这些年来,除了上班,少数时候和北京的朋友聚一下或者通过网络和朋友偶尔聊一聊之外,我基本上都是一个人独处。 我不是很...
    l稻o草v人er阅读 1,391评论 0 0

友情链接更多精彩内容