细说BFC

一、BFC概念

FC(Formatting Contexts)即格式化上下文,是W3C CSS2.1规范的一个概念,它是页面中的一块渲染区域,有一套渲染规则,决定了其子元素如何布局以及和其他元素之间的关系和作用

常见的FC有:BFC(块级格式化上下文)IFC(行级格式化上下文)、GFC(网格布局格式化上下文)、FFC(自适应格式化上下文)

BFC(Block Formatting Contexts)即块级格式化上下文,具有BFC特性的元素相当于一个带有屏蔽罩的容器,容器里面的元素无论如何布局都对外边的元素没有影响,并且该容器具有一些普通容器没有的特性。

它可以理解为某个元素的一个CSS属性,但又不能被显式修改,BFC属性元素对内对外都有一些特性。引用《CSS世界》里的比喻,BFC容器就像一个结界,具有内部元素不被外部元素影响也不影响外部元素的重要原则,而BFC的特性都是基于此原则展开的。

二、BFC特性

(1)同一个BFC下的元素之间,外边距发生重叠(防止内元素影响外元素)

(2)BFC容器可以包裹容器内浮动的元素(防止内元素影响外元素)

(3)BFC容器能够阻止容器内元素被容器外浮动元素的覆盖(防止外元素影响内元素)

三、BFC触发条件(满足条件之一即可触发)

(1)<html><body>根元素

(2)display属性设置为inline-block 、table-cell、table-caption 、flex

(3)float属性设置除了none以外的left、right、inherit

(4)position属性设置为absolute 和 fixed

(5)overflow属性设置为除了visible以外的hidden、auto、scroll

四、BFC的作用

(1)自适应两栏布局(重要)

(2)阻止元素被浮动元素覆盖

(3)清除内部浮动,即可以包含浮动元素

父元素中有两个子元素分别设置左右浮动,左浮动子元素接触父元素border-box的左边,右浮动子元素接触父元素border-box的右边,且父元素高度塌陷,需要清除浮动来解决高度塌陷问题。触发父元素的BFC,使两个子元素处于同一个BFC中达到清除浮动的效果。

(4)阻止margin重叠——分属于两个不同的BFC

参考特性1,两个同一BFC下的子元素之间的margin相互重叠,为防止这种情况,在其中一个子元素外加一个触发BFC的div, 这样两个子元素分属于两个BFC则margin不会重叠。

参考文档:

https://zhuanlan.zhihu.com/p/25321647

https://juejin.im/post/5909db2fda2f60005d2093db

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章