BFC

BFC 定義

BFC(Block formatting context)直譯為"塊級格式化上下文"。它是一個獨立的渲染區(qū)域箫锤,只有Block-level box參與贬蛙, 它規(guī)定了內部的Block-level Box如何布局,并且與這個區(qū)域外部毫不相干谚攒。
在解釋什么是BFC之前阳准,我們需要先知道Box、Formatting Context的概念馏臭。
Box:css布局的基本單位

Box 是 CSS 布局的對象和基本單位野蝇, 直觀點來說,就是一個頁面是由很多個 Box 組成的括儒。元素的類型和 display 屬性绕沈,決定了這個 Box 的類型。 不同類型的 Box帮寻, 會參與不同的 Formatting Context(一個決定如何渲染文檔的容器)乍狐,因此Box內的元素會以不同的方式渲染。讓我們看看有哪些盒子:

block-level box:display 屬性為 block, list-item, table 的元素固逗,會生成 block-level box浅蚪。并且參與 block fomatting context;
inline-level box:display 屬性為 inline, inline-block, inline-table 的元素烫罩,會生成 inline-level box惜傲。并且參與 inline formatting context;
run-in box: css3 中才有贝攒, 這兒先不講了操漠。

Formatting Context

Formatting context 是 W3C CSS2.1 規(guī)范中的一個概念。它是頁面中的一塊渲染區(qū)域饿这,并且有一套渲染規(guī)則浊伙,它決定了其子元素將如何定位,以及和其他元素的關系和相互作用长捧。最常見的 Formatting context 有 Block fomatting context (簡稱BFC)和 Inline formatting context (簡稱IFC)嚣鄙。

BFC是一個獨立的布局環(huán)境,其中的元素布局是不受外界的影響串结,并且在一個BFC中哑子,塊盒與行盒(行盒由一行中所有的內聯(lián)元素所組成)都會垂直的沿著其父元素的邊框排列。

BFC的布局規(guī)則

內部的Box會在垂直方向帐要,一個接一個地放置榨惠。
Box垂直方向的距離由margin決定盛霎。屬于同一個BFC的兩個相鄰Box的margin會發(fā)生重疊愤炸。
每個盒子(塊盒與行盒)的margin box的左邊,與包含塊border box的左邊相接觸(對于從左往右的格式化凤薛,否則相反)诞仓。即使存在浮動也是如此担巩。
BFC的區(qū)域不會與float box重疊。
BFC就是頁面上的一個隔離的獨立容器,容器里面的子元素不會影響到外面的元素屡萤。反之也如此掸宛。
計算BFC的高度時,浮動元素也參與計算措译。

怎么觸發(fā)形成BFC

根元素
絕對定位元素(position:absolute; position: fixed)
浮動元素(float:left; float: right;)
overflow不為默認值visible
行內塊元素(display:inline-block)
表格單元格(display: table-cell)
表格標題(display: table-caption)
匿名表格單元格元素(元素的 display 為 table饰序、table-row、 table-row-group求豫、table-header-group、table-footer-group(分別是HTML table最疆、row、tbody服爷、thead蚊逢、tfoot 的默認屬性)或 inline-table)
display值為flow-root
contain 值為 layout烙荷、content 或 paint 的元素
彈性元素(display: flex 或 inline-flex)
網格元素(display: grid 或 inline-grid)

BFC的特點

解決父子元素margin collapsing(外邊距重疊)的問題终抽;
包含浮動元素昼伴;
同層元素不和浮動元素重疊。
自適應兩欄布局

總結:
BFC就是頁面上的一個隔離的獨立容器价涝,容器里面的子元素不會影響到外面的元素色瘩。反之也如此逸寓。

因為BFC內部的元素和外部的元素絕對不會互相影響竹伸,因此泥栖, 當BFC外部存在浮動時,它不應該影響B(tài)FC內部Box的布局勋篓,BFC會通過變窄,而不與浮動有重疊譬嚣。同樣的,當BFC內部有浮動時孤荣,為了不影響外部元素的布局甸陌,BFC計算高度時會包括浮動的高度钱豁。避免margin重疊也是這樣的一個道理。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末牲尺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子溃卡,更是在濱河造成了極大的恐慌蜒简,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卷仑,死亡現(xiàn)場離奇詭異锡凝,居然都是意外死亡张肾,警方通過查閱死者的電腦和手機衬浑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門进统,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人螟碎,你說我怎么就攤上這事〉舴郑” “怎么了克伊?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵华坦,是天一觀的道長。 經常有香客問我惜姐,道長,這世上最難降的妖魔是什么坷衍? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮枫耳,結果婚禮上,老公的妹妹穿的比我還像新娘孟抗。我一直安慰自己,他們只是感情好夸浅,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帆喇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坯钦。 梳的紋絲不亂的頭發(fā)上预皇,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天婉刀,我揣著相機與錄音,去河邊找鬼突颊。 笑死,一個胖子當著我的面吹牛律秃,可吹牛的內容都是我干的爬橡。 我是一名探鬼主播棒动,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼船惨!你這毒婦竟也來了缕陕?” 一聲冷哼從身側響起疙挺,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹿榜,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體舱殿,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡险掀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了冈绊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡死宣,死狀恐怖碴开,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情潦牛,我是刑警寧澤眶掌,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布巴碗,位于F島的核電站,受9級特大地震影響橡淆,放射性物質發(fā)生泄漏召噩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一明垢、第九天 我趴在偏房一處隱蔽的房頂上張望蚣常。 院中可真熱鬧市咽,春花似錦、人聲如沸施绎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽致稀。三九已至冈闭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抖单,已是汗流浹背萎攒。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工矛绘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耍休,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓货矮,卻偏偏與公主長得像羊精,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子囚玫,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容

  • 先前在學習CSS float時喧锦,有同學提到了BFC這個詞,作為求知好問的好學生抓督,哪里不懂查哪里,那么今天就來研究一...
    這名字真不對閱讀 6,558評論 3 19
  • 一铃在、 什么是BFC供汛? 1 CSS布局的基本單位:Box(盒模型) Box是CSS布局的對象和基本單位涌穆,一份網頁由多...
    有個水友閱讀 1,204評論 0 2
  • 在解釋 BFC 是什么之前,我們先來看下 Box宿稀、Formatting Context的概念趁舀。 Box: CSS布...
    JuanitaLee閱讀 967評論 0 1
  • 1.背景介紹 BFC全稱是Block Formatting Context,是CSS2.1規(guī)范定義的涩惑,關于CSS渲...
    你隔壁的陌生人閱讀 1,129評論 0 0
  • BFC 已經是一個耳聽熟聞的詞語了仁期,網上有許多關于 BFC 的文章,介紹了如何觸發(fā) BFC 以及 BFC 的一些用...
    _Yfling閱讀 417評論 0 0