首先呢,BFC的全稱是Block Formatting Context,BFC其實就是頁面上的一塊區域,有它本身的渲染規則,決定了其內部子元素的定位等等。並且BFC內部的box的佈局,與這個容器外的絕不相關。css
防止被浮動元素遮蓋,好比實現兩欄佈局html
.aside { background: red; width: 170px; height: 600px; float: left; } .main { background: green; height: 700px; } <div class="aside"></div> <div class="main"></div>
側欄aside把主欄main遮住了一部分,根據上面說的BFC特性第二點:建立了BFC的元素不會與浮動元素重疊,而且會出如今浮動元素所在行的剩餘空間,設置main的overflow: hiddenapp
解決上下相鄰的兩個塊級外邊距合併(建立了BFC的元素和它的子元素不會發生摺疊)ide
.up { height: 100px; background: red; margin-bottom: 20px; } .down { height: 100px; background: green; margin-top: 10px; } <div class="up"></div> <div class="down"></div>
原本上下兩個元素間距應該是30px可是如今倒是20px,如今分別把這兩個元素放入不一樣的BFC佈局
<div class="wrapper"> <div class="up"></div> </div> <div class="wrapper"> <div class="down"></div> </div> .wrapper { overflow: hidden; }
清除浮動
浮動元素會帶來父元素高度塌陷測試
<div class="out"> <div class="in"></div> </div> .out { border: 1px solid; padding: 10px; /* overflow: hidden; */ } .in { width: 100px; height: 100px; background: red; float: left; }
根據上面說的BFC特性第三點,設置out元素爲overflow: hiddenui