BFC

前言

我们知道浮动元素导致的父元素高度塌陷,解决这个问题时我们是有几种方法的,其中一种设置float父元素也浮动,还有一种是父元素设置overflow:hidden;因为float和overflow会强制父元素包裹浮动的子元素从而父元素就有了高度。
那么为什么float和overflow会强制父元素包裹浮动的子元素?看了BFC,你就知道了。

什么是BFC?

BFC(Block formatting context)
直译为:块级的格式化上下文,它是网页中一个独立的渲染区域,这个渲染区域只有块级元素才能参与,它规定了内部的块级元素如何布局,BFC渲染区域内如何布局,与区域外部毫不相干;外部元素也不会影响BFC渲染区域内的元素。
直白点:是一个独立的空间,并且是个块级元素,外界与自己互不影响

image.png

2种渲染区域

css中有两种渲染区域:块级元素渲染区域(BFC)和行级元素渲染区域(IFC)

image.png
BFC:

  • 块级元素渲染区域:display属性为:block,list-item,table的元素,会生成块级元素渲染区域。
  • 块级元素渲染区域以BFC方式渲染。

image.png
IFC:

  • 行级元素渲染区域:display属性为:inline-block,inline,inline-table的元素,会生成行级元素渲染区域。
  • 行级元素渲染区域以IFC的方式渲染。

image.png

BFC的布局规则

  • 默认,内部的块元素会在垂直的方向,一个接一个的放置,每个块元素独占一行;
  • 块元素垂直方向的总距离由边框内大小(border+padding+内容)+margin共同决定的;
  • 同一个BFC里,相邻的块级元素的,垂直margin会重叠/合并,取最大值,而不是两者相加,相等取共同的margin值,水平方向的margin则不会;
  • 计算父元素BFC渲染区域高度时,内部浮动元素的高度,都必须算在内(这里就明白了,为什么浮动元素导致父元素高度塌陷时,父元素使用浮动或者overflow:hidden,就可以,因为这两个属性会形成BFC);

如何形成BFC?

4种情况会形成BFC渲染区域

  1. float不是none;
  2. position的值不是static或者relative;
  3. display的值是inline-block,table-cell,flex,table-caption,inline-flex;
  4. overflow的值不是visible;
    结合BFC的布局规则里面的第4条,因此形成BFC区域可以解决高度塌陷。

可以解决什么问题?

  1. 避免垂直方向margin合并;
  2. 避免垂直方向margin溢出;
  3. 左定宽,右自适应布局;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值