BFC及其作用


一、什么是BFC 

BFC(block formatting context):簡單來說,BFC 就是一種屬性,這種屬性會影響着元素的定位以及與其兄弟元素之間的相互作用。 
中文常譯為塊級格式化上下文。是 W3C CSS 2.1 規范中的一個概念,它決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用。 在進行盒子元素布局的時候,BFC提供了一個環境,在這個環境中按照一定規則進行布局不會影響到其它環境中的布局。比如浮動元素會形成BFC,浮動元素內部子元素的主要受該浮動元素影響,兩個浮動元素之間是互不影響的。 也就是說,如果一個元素符合了成為BFC的條件,該元素內部元素的布局和定位就和外部元素互不影響(除非內部的盒子建立了新的 BFC),是一個隔離了的獨立容器。(在 CSS3 中,BFC 叫做 Flow Root)

二、 形成 BFC 的條件 

1、浮動元素,float 除 none 以外的值; 
2、絕對定位元素,position(absolute,fixed); 
3、display 為以下其中之一的值 inline-blocks,table-cells,table-captions; 
4、overflow 除了 visible 以外的值(hidden,auto,scroll)

三、BFC常見作用 

1,浮動元素無法撐起父元素:

在通常情況下父元素的高度會被子元素撐開,而如果父元素沒有設置高度,其子元素均為浮動元素,此時父元素會發生了高度坍塌,上下邊界重合,即浮動元素無法撐起父元素。這時就可以用BFC來清除浮動了,講父元素整體設置為BFC環境。 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .box{
 8             width: 1226px;
 9             background-color: red;
10             margin: 0 auto;
11             /*設置了一個BFC區域,慎用*/
12             overflow: hidden;
13         }
14         .child1{
15             width: 300px;
16             height: 100px;
17             background-color: green;
18             float: left;
19         }
20         .child2{
21             width: 300px;
22             height: 100px;
23             background-color: blue;
24             float: right;
25         }
26     </style>
27 </head>
28 <body>
29     <div class="box clearfix">
30         <div class="child1"></div>
31         <div class="child2"></div>
32     </div>
33     <p>哈哈哈哈哈</p>
34 </body>
35 </html>
設置BFC區域

2,不被浮動元素覆蓋 :

 div浮動兄弟遮蓋問題:由於左側塊級元素發生了浮動,所以和右側未發生浮動的塊級元素不在同一層內,所以會發生div遮擋問題。可以給藍色塊加 overflow: hidden,觸發bfc來解決遮擋問題。 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .father{
 8             width: 100px;
 9             height: 50px;
10             background-color: red;
11             float: left;
12         }
13         .child{
14             /*設置BFC*/
15             overflow: hidden;
16             width: 600px;
17             height: 100px;
18             background-color: blue;
19         }
20 
21     </style>
22 </head>
23 <body>
24     <div class="father">
25         aaa
26     </div>
27     <div class="child">
28         bbb
29     </div>
30 
31 </body>
32 </html>
BFC解決遮蓋

3,BFC解決margin塌陷問題:

margin塌陷問題:在標准文檔流中,塊級標簽之間豎直方向的margin會以大的為准,這就是margin的塌陷現象。可以用overflow:hidden產生bfc來解決。 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style type="text/css">
 7         .father{
 8             overflow: hidden;
 9             background-color: #424242;
10         }
11         .box2{
12             width: 50px;
13             height: 50px;
14             margin-bottom: 30px;
15             overflow: hidden;
16         }
17         .box3{
18             margin-top: 40px;
19             background-color: green;
20             width: 50px;
21             height: 50px;
22         }
23 
24     </style>
25 </head>
26 <body>
27     <div class="father">
28         <div class="box2">box2</div>
29     </div>
30     <div class="box3"></div>
31 </body>
32 </html>
解決margin塌陷問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM