塊格式化上下文(Block Formatting Context,BFC) 是Web頁面的可視化CSS渲染的一部分,是塊盒子的佈局過程發生的區域,也是浮動元素與其餘元素交互的區域。git
它是一個獨立的渲染區域,只有塊級元素參與,它規定了內部的Block level Box如何佈局,而且與這個區域外部好不相干。github
下列方式會建立BFC佈局
防止margin重疊flex
<body> <p>top</p> <p>bottom</p> </body> <style> p { width: 100px; height: 100px; background: yellow; line-height: 100px; margin: 10px; text-align: center; } </style>
展示效果:spa
兩個div中間的間距爲10px,而不是20px,由於它們處於同一個BFC3d
解決方案爲給第二個div再包一層div,設置其overflow屬性,使它們處於不一樣的BFC:code
<body> <p>top</p> <div> <p>bottom</p> </div> </body> <style> p { width: 100px; height: 100px; background: yellow; line-height: 100px; margin: 10px; text-align: center; } div { overflow: auto; } </style>
效果:orm
讓浮動內容與周圍內容等高blog
看以下例子:get
<div class="box"> <div class="float">浮動元素</div> <p>未浮動元素</p> </div> <style> .box { background-color: rgb(224, 206, 247); border: 5px solid rebeccapurple; } .float { float: left; width: 200px; height: 150px; background-color: white; border:1px solid black; padding: 10px; } </style>
產生的效果:
因爲浮動,使得浮動元素的高度高於旁邊的元素,解決方式爲使父box生成一個BFC,以下:
<div class="box"> <div class="float">浮動元素</div> <p>未浮動元素</p> </div> <style> .box { background-color: rgb(224, 206, 247); border: 5px solid rebeccapurple; overflow: auto; } .float { float: left; width: 200px; height: 150px; background-color: white; border:1px solid black; padding: 10px; } </style>
效果以下: