BFC塊級(jí)格式化上下文
## BFC概念
BFC即Block Formatting Contexts(塊級(jí)格式化上下文),它是W3C CSS2.1 規(guī)范中的一個(gè)概念。它是頁(yè)面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素將如何定位,以及和其他元素的關(guān)系和相互作用。
具有BFC特性的元素可以看作是隔離了的獨(dú)立容器,容器里面的元素不會(huì)在布局上影響到外面的元素,并且BFC具有普通容器所沒(méi)有的一些特性。
通俗一點(diǎn)來(lái)講,可以把BFC理解為一個(gè)封閉的大箱子,箱子內(nèi)部的元素?zé)o論如何翻江倒海,都不會(huì)影響到外部。
## BFC觸發(fā)條件
滿足以下條件之一,即可觸發(fā)BFC:
- float的值不是none
- position的值不是static或者relative
- display的值是inline-block、table-cell、flex、table-caption或者inline-flex
- overflow的值不是visible
下面的box盒子就是一個(gè)BFC獨(dú)立容器:
```css
.box{
width: 100px;
height: 100px;
overflow: hidden; /* 觸發(fā)了BFC,形成獨(dú)立盒子 */
}
```
## BFC的應(yīng)用
在前面介紹盒模型的margin時(shí),出現(xiàn)了傳遞和疊加的問(wèn)題,這里可以采用BFC規(guī)范來(lái)解決,原理就是讓盒子形成一個(gè)獨(dú)立的容器,無(wú)論里面的子元素如何折騰,都不影響到外面的元素。
```html
```
![img](https://pic3.zhimg.com/80/v2-e39762719eaabb278d50bbbfb20c6242_720w.jpg)
BFC解決傳遞問(wèn)題
```html
```
![img](https://pic4.zhimg.com/80/v2-98c2bcca945134a57cc7d093be3923e3_720w.jpg)
BFC解決疊加問(wèn)題
BFC還可以解決前面浮動(dòng)遇到了父容器高度塌陷的問(wèn)題,也就是不管里面子元素是否浮動(dòng),都不會(huì)因?yàn)槊撾x文檔流對(duì)容器高度造成影響。
```html
```
![img](https://pic3.zhimg.com/80/v2-ad1db423b56b0f6951030b8bc6da75d2_720w.jpg)
BFC解決浮動(dòng)高度塌陷
在現(xiàn)代布局flex和grid中,是默認(rèn)自帶BFC規(guī)范的,所以可以解決非BFC盒子的一些問(wèn)題,這就是為什么flex和grid能成為更好的布局方式原因之一。
更多關(guān)于“html5培訓(xùn)”的問(wèn)題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的提升班,高品質(zhì)課程助理你實(shí)現(xiàn)夢(mèng)想。