我们常说的文档流分为普通流、浮动流与定位流三种。
FC(formatting context格式化上下文),指的是一块渲染区域,依靠渲染规则,决定其子元素如何布局及与其他元素的关系和作用。
FC分为BFC、IFC、GFC和FFC,其中BFC(block formatting context)块级格式化上下文
BFC特点
1.内部的box会在垂直方向上,一个接一个地放置
2.box垂直方向的距离由margin决定,属于同一个bfc的两个box相邻的margin会发生重叠
3.每个box的左边,与包含box的box的左边相接触,即使存在float box
4.bfc的区域不会与float box重叠
5.bfc是一个隔离的独立容器,容器内的子元素不会影响外面的元素
6.计算高度时浮动元素也参与
BFC触发条件
1.根元素,即html
2.float不为none
3.position为absolute或fixed
4.display为inline-block、table-cell、table-caption、flex、inline-flex
5.overflow不为visible
常见应用
1.清除浮动元素
通过设置overflow:hidden 闭合浮动,这个不做赘述
2.margin叠加
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .up { width: 100px; height: 100px; background: red; margin: 50px; } .down { width: 100px; height: 100px; background: green; margin: 50px; } </style> </head> <body> <div class="up"></div> <div class="down"></div> </body> </html>
由于up与down都处于html当中,所以默认margin叠加
使用div包裹其中一个,并将此div转化为BFC布局,则可实现叠加
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> .up { width: 100px; height: 100px; background: red; margin: 50px; } .cont-down { overflow: hidden; } .down { width: 100px; height: 100px; background: green; margin: 50px; } </style> </head> <body> <div class="up"></div> <div class="cont-down"> <div class="down"></div> </div> </body> </html>
来源:https://www.cnblogs.com/yanze/p/7511089.html