BFC 塊級格式化上下文

在解釋BFC之前怜庸,我們需要了解一下我們常說的HTML的文檔流。

文檔流

文檔流驴一,其實就是指BFC中的FC休雌,F(xiàn)C(Formatting Context)灶壶,格式化上下文肝断,它是頁面中的一塊渲染區(qū)域,有一套渲染規(guī)則驰凛,決定了其子元素如何布局胸懈,以及和其他元素之間的關(guān)系和作用。

其實文檔流根據(jù)元素在排版中的定位類型分為三種恰响,分別為:

  • 標(biāo)準(zhǔn)流
  • 浮動流
  • 定位流
1. 標(biāo)準(zhǔn)流

也叫普通流趣钱,就是我們常說的文檔流,指的是HTML中元素在計算布局排版的過程中胚宦,所有處于文檔流中的元素會自動的從左到右(非塊級元素)首有,從上到下(塊級元素)的排列規(guī)則。

標(biāo)準(zhǔn)流文檔布局.png
2. 浮動流

使用float使元素脫離了標(biāo)準(zhǔn)的文檔流枢劝,會導(dǎo)致其他處于文檔流中的盒子在計算布局排版時環(huán)繞在它的周邊井联,需要時可以設(shè)置 clear 屬性來清除浮動。

注意: 浮動會使元素脫離文檔流您旁,但是不會脫離文本流烙常,在其他盒子的文本內(nèi)容在計算布局時,浮動元素還是占位置的鹤盒。

文本流:指的是元素內(nèi)部的一系列的字符的排列規(guī)則蚕脏。

我們可以看到p2,p3元素在計算布局位置的時候侦锯,無視了開啟浮動的p1元素的位置驼鞭,從body元素的最左邊開始布局,而他們內(nèi)部的文本卻并沒有無視p1元素的位置尺碰。

浮動流布局.png
  1. 定位流(position: absolute或fixed)

注意:使用定位會同時使元素脫離標(biāo)準(zhǔn)的文檔流和文本流终议,在其他盒子的文本內(nèi)容在計算布局時,定位元素不占位置

  • 對于position: absolute葱蝗,元素定位將相對于上級元素中最近的一個使用了relative穴张、fixed、absolute的元素两曼,如果沒有則相對于body皂甘;
  • 對于position:fixed,元素的定位則是相對于瀏覽器窗口悼凑;
定位流布局.png

脫離文檔流:指的是元素脫離正常元素的布局排版規(guī)則偿枕,其他處于文檔流中的盒子在計算布局排版時,會自動無視已脫離文檔流的元素來進(jìn)行定位璧瞬。

BFC(Block Formatting Context)塊級格式化上下文

BFC是用于布局塊級盒子的一塊渲染區(qū)域,你可以將一個 BFC 可以理解為一個容器渐夸,里面的元素不會影響到容器外的布局嗤锉;

可以簡單理解為一個元素的內(nèi)部子元素?zé)o論尺寸、定位如何變化墓塌,都不會影響外部元素的定位和尺寸

注意:一個BFC的范圍包含其容器內(nèi)的所有子元素瘟忱,但不包含其子元素的下級元素

形成BFC常見條件:
  • 根元素,也就是 HTML 元素
  • 浮動元素苫幢,即float不是none
  • 定位元素访诱,position是absolute或者fixed
  • overflow不是visible的元素,如overflow:hidden
  • 行內(nèi)塊元素(displayinline-block
  • display值為 table韩肝、flex触菜、grid
BFC的作用
  1. 清除浮動
    -- 一個標(biāo)準(zhǔn)的文檔流的塊級元素可能被一個float元素覆蓋,擠占正常的文檔流哀峻,設(shè)置BFC這可以避免這種問題

  2. 阻止相鄰元素的上下margin合并

  3. 用于解決容器元素高度塌陷問題

<style>
  #div1, #div3 {
    width: 100px;
    height: 100px;
    background: red;
    margin-top: 20px;
    margin-bottom: 20px;  
  }
<style>
沒有使用BFC的布局.png

如果想避免這種情況涡相,可以給這兩個 div 裹上一個 BFC。

<style>
  .box {
     overflow: hidden;
  }
</style>

<div class="box">
   <div id="div1"></div>
</div>
<div class="box">
    <div id="div3"></div>
 </div>
使用BFC后的布局.png

浮動元素脫離了正常的文檔流剩蟀,一般情況下催蝗,計算容器元素的高度時,是不會考慮浮動元素的高度喻旷,則會導(dǎo)致容器元素的內(nèi)部塌陷生逸;
但是當(dāng)容器元素就使用了 BFC,則不會一起塌下且预,容器元素的高度會根據(jù)子元素的高度自動撐開槽袄。

<style>
  .container {
    /* overflow: hidden; */
    padding: 5px;
    border: 1px solid #000;
  }
  .box {
    float: left;
    width: 100px;
    height: 100px;
    background-color: cornflowerblue;
  }
</style>

<div class="container">
  <div class="box"></div>
</div>
高度塌陷問題解決.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锋谐,隨后出現(xiàn)的幾起案子遍尺,更是在濱河造成了極大的恐慌,老刑警劉巖涮拗,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乾戏,死亡現(xiàn)場離奇詭異,居然都是意外死亡三热,警方通過查閱死者的電腦和手機(jī)鼓择,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來就漾,“玉大人呐能,你說我怎么就攤上這事。” “怎么了摆出?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵朗徊,是天一觀的道長。 經(jīng)常有香客問我偎漫,道長爷恳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任象踊,我火速辦了婚禮温亲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘通危。我一直安慰自己铸豁,他們只是感情好灌曙,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布菊碟。 她就那樣靜靜地躺著,像睡著了一般在刺。 火紅的嫁衣襯著肌膚如雪逆害。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天蚣驼,我揣著相機(jī)與錄音魄幕,去河邊找鬼。 笑死颖杏,一個胖子當(dāng)著我的面吹牛纯陨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播留储,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼翼抠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了获讳?” 一聲冷哼從身側(cè)響起阴颖,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丐膝,沒想到半個月后量愧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡帅矗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年偎肃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浑此。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡累颂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尤勋,到底是詐尸還是另有隱情喘落,我是刑警寧澤茵宪,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站瘦棋,受9級特大地震影響稀火,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赌朋,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一凰狞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沛慢,春花似錦赡若、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躺苦,卻和暖如春身腻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背匹厘。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工嘀趟, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人愈诚。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓她按,卻偏偏與公主長得像,于是被迫代替她去往敵國和親炕柔。 傳聞我的和親對象是個殘疾皇子酌泰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容