前沿知识:
CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
普通流:在普通流中,元素按照其在 HTML 中的先后位置至上而下布局。在这个过程中,行内元素水平排列,直到当行被占满然后换行;块级元素则会被渲染为完整的一个新行, 除非另外指定,否则所有元素默认都是普通流定位。
浮动定位:在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。
绝对定位:元素会整体脱离普通流,绝对定位元素会对其兄弟元素造成影响(与浮动元素会影响兄弟元素相同),而元素具体的位置由绝对定位的坐标决定。
BFC属于普通流,对兄弟元素不会造成影响。
1、BFC是什么?
从样式上看,具有 BFC 的元素与普通的容器没有什么区别;
但是从功能上,具有 BFC 的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器没有的一些特性,例如可以包含浮动元素,上文中的第二类清除浮动的方法(如 overflow 方法)就是触发了浮动元素的父元素的 BFC ,使到它可以包含浮动元素,从而防止出现高度塌陷的问题。
简单来说,BFC 就是一种属性,这种属性会影响着元素的定位以及与其兄弟元素之间的相互作用。(将不正常的元素变得正常)
2、BFC特性
(1)BFC 会阻止外边距折叠 (可用于防止Margin塌陷);
(2)BFC 可以包含浮动的元素 (可用于清除浮动,消除浮动元素对兄弟元素的影响);
(3)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