关于BFC


在我的另一篇关于清浮动的文章里知道,BFC是清浮动的主要技术。


BFCBlock formatting context 直译:块级格式化上下文):

  BFC是一个独立的渲染区域,只有块级Box参与,规定了内部的块级Box如何布局,仍然属于文档的普通流,里面的子元素不会在布局上影响外面的元素,即是浮动元素与其他元素的交互限定区域。

  浮动定位和清除浮动时只会应用于同一个BFC内的元素。浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素的浮动。

 布局规则(特性)

①内部的块框会在垂直方向,依次放置;

②块框垂直方向的距离由margin决定。属于同一个BFC的两个相邻块框的margin会发生重叠。如果两个相邻块框不属于同一个块级格式化上下文,它们的外边距就不会叠加;

③每个元素的margin box的左边,与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此;

BFC的区域不会与float box重叠。根据规定,一个块级格式化上下文的边框不能和它里面的元素的外边距重叠。这就意味着浏览器将会给块级格式化上下文创建隐式的外边距来阻止它和浮动元素的外边距叠加。由于这个原因,当给一个挨着浮动的块级格式化上下文添加负的外边距时将会不起作用

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此;

⑥计算BFC的高度时,浮动元素也参与。

 BFC的创建(来自MDN

·根元素或包含根元素的元素

·浮动元素(元素的float不是none

·绝对定位元素(元素的positionabsolutefixed

·行内块元素(元素的displayinline-block

·表格单元格(元素的displaytable-cellHTML表格单元格默认为该值)

·表格标题(元素的displaytable-captionHTML表格标题默认为该值)

·匿名表格单元格元素(元素的displaytabletable-rowtable-row-grouptable-header-grouptable-footer-group(分别是HTML table、row、tbody、thead、tfoot的默认属性)或inline-table

·overflow值不为visible 的块元素

·display值为flow-root的元素

·contain值为layoutcontent strict 的元素

·弹性元素(displayflexinline-flex元素的直接子元素)

·网格元素(displaygridinline-grid元素的直接子元素)

·多列容器(元素的column-countcolumn-width不为auto包括column-count1

·column-spanall的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值