Block Formatting Contexts (BFC--块级格式化上下文)

前沿知识:

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

普通流:在普通流中,元素按照其在 HTML 中的先后位置至上而下布局。在这个过程中,行内元素水平排列,直到当行被占满然后换行;块级元素则会被渲染为完整的一个新行, 除非另外指定,否则所有元素默认都是普通流定位。

浮动定位:在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。

绝对定位:元素会整体脱离普通流,绝对定位元素会对其兄弟元素造成影响(与浮动元素会影响兄弟元素相同),而元素具体的位置由绝对定位的坐标决定。

BFC属于普通流,对兄弟元素不会造成影响。

1、BFC是什么?

从样式上看,具有 BFC 的元素与普通的容器没有什么区别;

但是从功能上,具有 BFC 的元素可以看作是隔离了的独立容器容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器没有的一些特性,例如可以包含浮动元素,上文中的第二类清除浮动的方法(如 overflow 方法)就是触发了浮动元素的父元素的 BFC ,使到它可以包含浮动元素,从而防止出现高度塌陷的问题。

简单来说,BFC 就是一种属性,这种属性会影响着元素的定位以及与其兄弟元素之间的相互作用。(将不正常的元素变得正常

2、BFC特性

(1)BFC 会阻止外边距折叠  (可用于防止Margin塌陷);

(2)BFC 可以包含浮动的元素 (可用于清除浮动,消除浮动元素对兄弟元素的影响);

(3)BFC 可以阻止元素被浮动元素覆盖;


box2设置了float,box3被覆盖了;


box3触发了BFC之后不被它的兄弟浮动元素覆盖

3、如何触发BFC ?

满足下面任一条件的元素,会触发为 BFC :

(1)浮动元素,float 除 none 以外的值

(2)绝对定位元素,position(absolute,fixed)

(3)display 为以下其中之一的值 inline-blocks,table-cells,table-captions

(4)overflow 除了 visible 以外的值(hidden,auto,scroll)

参考文章:https://www.cnblogs.com/leejersey/p/3991400.html

你可能感兴趣的:(Block Formatting Contexts (BFC--块级格式化上下文))