讲不清楚的BFC

BFC全称"Block formatting Context",也叫块级格式化上下文。
CSS文档里对BFC的描述

浮动,绝对定位元素,非块盒的块容器(inline-block,table-cells)和overflow不为visible的块盒会为他们的内容建立一个新的格式化上下文

在一个BFC中,盒的数值方向一个接一个地放置,从包含块的顶部开始。两兄弟盒之间的竖直距离由margin属性决定。同一个块格式化上下文中的相邻块级盒之间的竖直margin会合并

在一个BFC中,每个盒的left外边(left outer edge)挨着包含块的left边。即使存在浮动,这也成立。除非该盒建立新的BFC。

MDN对BFC的描述

一个BFC由以下之一创建:

1,根元素或其它包含它的元素
2,浮动元素 (元素的 float 不是 none)
3,绝对定位元素 (元素具有 position 为 absolute 或 fixed)
4,内联块 (元素具有 display: inline-block)
5,表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)
6,表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
7,具有overflow 且值不是 visible 的块元素,
8,display: flow-root(css3)
9,column-span: all 应当总是会创建一个新的格式化上下文,即便具有 column-span: all 的元素并不被包裹在一个多列容器中。

功能1:可以让没有被爸爸(父元素)包住的儿子(子元素)进入爸爸的怀抱
kslFeg.png

当son元素浮动,dad元素包不住son元素,给dad元素加BFC包住浮动元素son


ksl57Q.png
  • 但是要注意的是,日常工作不建议使用BFC来清除浮动,因为由于CSS不成交的特性,加BFC可能会有附加的不希望出现的效果,而清除浮动clearfix可以完全替代BFC


    ks8dXV.png
功能2:兄弟之间划清界限
ksGlg1.png

当gg元素浮动时,可以看到gg是覆盖在dd元素上边的,给dd元素加BFC可以让他们划清界限


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

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,189评论 1 92
  • 先前在学习CSS float时,有同学提到了BFC这个词,作为求知好问的好学生,哪里不懂查哪里,那么今天就来研究一...
    这名字真不对阅读 6,704评论 3 19
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,867评论 1 45
  • (注1:如果有问题欢迎留言探讨,一起学习!转载请注明出处,喜欢可以点个赞哦!)(注2:更多内容请查看我的目录。) ...
    love丁酥酥阅读 4,541评论 2 5
  • 写在2019年的第一天 ...
    梦近阅读 1,038评论 1 3

友情链接更多精彩内容