BFC佈局

BFC(塊級格式化上下文)

是web頁面的可視化CSS渲染的一部分,是佈局過程當中生成塊級盒子的區域,也是浮動元素與其餘元素的交互區域。css

觸發條件

  1. 根元素, 即HTML元素
  2. float的值不爲none
  3. overflow的值不爲visible
  4. display的值爲inline-block, table-cell, table-caption
  5. position的值爲absolute或fixed

佈局規則

  1. 內部的box會在垂直方向, 一個接一個地放置(這點就是咱們常見到的塊級元素佔一行)
  2. box的垂直方向的距離由margin決定, 屬於同一個BFC的兩個相鄰的margin會發生重疊, 與方向無關(垂直方向上的margin重合也就是咱們常說的「坍塌現象」)
  3. 每一個元素的margin box的左邊, 與包含border box的左邊相接觸(對於從左往右的格式化, 不然相反). 即便存在浮動也是如此
  4. BFC的區域不會與float box重疊
  5. BFC就是頁面上的一個隔壁的獨立容器, 容器裏面的子元素不會影響到外面的元素. 反之也如此
  6. 計算BFC的高度時, 浮動元素也參與計算

對比初學css時的規則

  1. block元素會擴展到與父元素同寬, 因此block元素會垂直排列
  2. 垂直方向上兩個相鄰的DIV margin重疊, 而水平方向上不會(這個說法就不徹底正確)
  3. 浮動元素會接近左上方或右上方
  4. 爲父元素設置overflow: hidden 或浮動元素, 則會包含浮動元素

初學CSS規則背後更深層次的概念其實就是BFC佈局規則html

做用

  1. 自適應的兩欄佈局
  2. 能夠阻止元素被浮動元素覆蓋
  3. 能夠包含浮動元素——清除內部浮動
  4. 分屬不一樣的BFC時能夠阻止margin重疊

經過BFC實現兩欄佈局

1
2
3
4
5
大專欄  BFC佈局class="line">6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html lang="en">
<head>
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.box {
height: 100%;
width: 100%;
}
.left {
float: left;
height: 200px;
background-color: aquamarine;
width: 300px;
margin-right: 20px;
}
.right {
height: 300px;
background-color: blueviolet;
overflow: hidden;
}
</style>
</head>
<body>
<div class="box">
<div class="left"></div>
<div class="right"></div>
</div>
</body>
</html>
相關文章
相關標籤/搜索