细说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)自适应两栏布局(重要)

float : 浮动元素具有破坏性和包裹性,失去元素本身的流体自适应性,不适合做自适应布局

position:absolute 脱离文档流,不能很好适应非定位元素,不适合自适应

overflow:auto / hidden 能够实现自适应布局,IE7及以上版本适用 。 缺点:容器盒子外的内容被遮盖

display:inline-block  IE6、IE7很好的支持自适应布局

display: table-cell  IE8以及以上版本支持自适应布局,缺点:连续英文字符不能换行

因此,支持自适应布局的BFC属性中,提供两套方案:

1. overflow:hidden

2. display:inline-block +display:table-cell

{   
    display:table-cell;
    width:9999px;
     /*     兼容IE7     */
    *display: inline-block;                          
}

(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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值