1. 程式人生 > >BFC布局

BFC布局

lin span play bsp 距離 關系 如何 一個 att

我們常說的文檔流分為普通流、浮動流與定位流三種。

FC(formatting context格式化上下文),指的是一塊渲染區域,依靠渲染規則,決定其子元素如何布局及與其他元素的關系和作用。

FC分為BFC、IFC、GFC和FFC,其中BFC(block formatting context)塊級格式化上下文

BFC特點

1.內部的box會在垂直方向上,一個接一個地放置

2.box垂直方向的距離由margin決定,屬於同一個bfc的兩個box相鄰的margin會發生重疊

3.每個元素margin 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>

技術分享

BFC布局