如何使用BFC清除CSS浮动以及解决margin合并的问题

尚衍亮 2019-06-30

1、CSS 最基本的布局单位

Box 是 CSS 布局的对象和基本单位。
元素的类型和display的属性决定了Box的类型。

2、BFC

BFC(Box Formatting Context)是一个独立的渲染区域,规定内部的元素如何布局,并且与外部的元素无关。
Formatting context 是 W3C CSS2.1 规范中的一个概念。它是页面中的一块渲染区域,并且有一套自己的渲染规则,规定了内部子元素如何定位,以及与其他元素的关系和相互作用。

3、BFC的布局规则

内部的Box会在垂直方向上一个接着一个放置。
Box垂直方向的距离由 margin 决定。属于同一个BFC中的两个相邻的Box上下margin会发生叠加。
每个元素的margin box 的左边,与包含块border box 的左边相接触。即使浮动也是如此。
BFC 的区域不会与float box 重叠。
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响外面的元素,反之也如此。
计算BFC的高度时,浮动元素也参与计算。

4、哪些元素会生成BFC?

根元素;
float 属性不为 none;

position 为 absolute 或 fixed;

display 为 inline-block,table-cell,table-caption,flex,inline-flex;

overflow 不为 visible; 

5、BFC的作用及原理

自适应两栏布局:左边定宽高,右边自适应。
    左侧浮动,然后左右重叠,根据BFC的规则第三、四条,设置右侧的元素为BFC。

清除内部浮动:
    一个元素里面,有两个浮动的元素,父元素的高度默认是不计算浮动元素的高度。
    解决方案,根据BFC规则第六条。

防止垂直margin叠加:
    BFC内部相邻的元素的margin会叠加。
    根据BFC规则第五条,将其中一个设置为BFC即可。

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

相关推荐