BFC布局

我们常说的文档流分为普通流、浮动流与定位流三种。

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