BFC 即 Block Formatting Contexts (塊級格式化上下文),它屬於上述定位方案的普通流。css
它是一個獨立的渲染區域,只有Block-level box參與, 它規定了內部的Block-level Box如何佈局,而且與這個區域外部絕不相干。app
通俗一點來說,能夠把 BFC 理解爲一個封閉的大箱子,箱子內部的元素不管如何翻江倒海,都不會影響到外部。佈局
1. 清除內部浮動flex
咱們在佈局時常常會遇到這個問題:對子元素設置浮動後,父元素會發生高度塌陷,也就是父元素的高度變爲0。解決這個問題,只須要把把父元素變成一個BFC就好了。經常使用的辦法是給父元素設置overflow:hidden。spa
2. 垂直margin合併3d
在CSS當中,相鄰的兩個盒子的外邊距能夠結合成一個單獨的外邊距。這種合併外邊距的方式被稱爲摺疊,而且於是所結合成的外邊距稱爲摺疊外邊距。
摺疊的結果:code
3. 建立自適應兩欄佈局orm
<body> <div class="wrapper"> <div class="float-left">Float left box</div> <p> 正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文 正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文 </p> </div> </body>
<style type="text/css"> *{ margin:0; padding:0; box-sizing: border-box; } .wrapper{ background: blue; padding:10px; color:#fff; } .float-left{ float:left; background: mediumvioletred; padding:5px; opacity: 0.5; } p{ line-height:30px; background: red; } </style>
顯然,這是p元素中的文字受到了div.float-left元素浮動的影響;blog
若是想要文字環繞的效果,float是最爲合適的;ci
若是不想要文字環繞的效果,則須要對p元素創建一個BFC,消除外界因素對其內容的影響。
常見的方法是:
overflow:hidden\auto\scroll;
display:flex\table\table-cell;