BFC 是什么 解決 哪些問(wèn)題?????

BFC(Block Formatting Context)直譯為“塊級(jí)格式化范圍”业栅。

是?W3C CSS 2.1?規(guī)范中的一個(gè)概念,它決定了元素如何對(duì)其內(nèi)容進(jìn)行定位征懈,以及與其他元素的關(guān)系和相互作用。當(dāng)涉及到可視化布局的時(shí)候,Block Formatting Context提供了一個(gè)環(huán)境篮幢,HTML元素在這個(gè)環(huán)境中按照一定規(guī)則進(jìn)行布局。一個(gè)環(huán)境中的元素不會(huì)影響到其它環(huán)境中的布局为迈。比如浮動(dòng)元素會(huì)形成BFC三椿,浮動(dòng)元素內(nèi)部子元素的主要受該浮動(dòng)元素影響,兩個(gè)浮動(dòng)元素之間是互不影響的葫辐。這里有點(diǎn)類似一個(gè)BFC就是一個(gè)獨(dú)立的行政單位的意思搜锰。也可以說(shuō)BFC就是一個(gè)作用范圍」⒄剑可以把它理解成是一個(gè)獨(dú)立的容器蛋叼,并且這個(gè)容器的里box的布局,與這個(gè)容器外的毫不相干剂陡。

另一個(gè)通俗點(diǎn)的解釋是:在普通流中的?Box(框)?屬于一種?formatting context(格式化上下文)?狈涮,類型可以是?block?,或者是?inline鸭栖,但不能同時(shí)屬于這兩者歌馍。并且,?Block boxes(塊框)?在?block formatting context(塊格式化上下文)?里格式化晕鹊,?Inline boxes(塊內(nèi)框)?則在?inline formatting context(行內(nèi)格式化上下文)?里格式化松却。任何被渲染的元素都屬于一個(gè)?box?,并且不是?block?捏题,就是inline?玻褪。即使是未被任何元素包裹的文本,根據(jù)不同的情況公荧,也會(huì)屬于匿名的?block boxes?或者?inline boxes带射。所以上面的描述,即是把所有的元素劃分到對(duì)應(yīng)的?formatting context?里循狰。

其一般表現(xiàn)規(guī)則窟社,我整理了以下這幾個(gè)情況:

1、在創(chuàng)建了?Block Formatting Context?的元素中绪钥,其子元素按文檔流一個(gè)接一個(gè)地放置灿里。垂直方向上他們的起點(diǎn)是一個(gè)包含塊的頂部,兩個(gè)相鄰的元素之間的垂直距離取決于 ‘margin’ 特性程腹。

?根據(jù)?CSS 2.1?8.3.1 Collapsing margins第一條匣吊,兩個(gè)相鄰的普通流中的塊框在垂直位置的空白邊會(huì)發(fā)生折疊現(xiàn)象。也就是處于同一個(gè)BFC中的兩個(gè)垂直窗口的margin會(huì)重疊。

?根據(jù)?CSS 2.1?8.3.1 Collapsing margins第三條色鸳,生成?block formatting context?的元素不會(huì)和在流中的子元素發(fā)生空白邊折疊社痛。所以解決這種問(wèn)題的辦法是要為兩個(gè)容器添加具有BFC的包裹容器。

2命雀、在?Block Formatting Context?中蒜哀,每一個(gè)元素左外邊與包含塊的左邊相接觸(對(duì)于從右到左的格式化,右外邊接觸右邊)吏砂, 即使存在浮動(dòng)也是如此(盡管一個(gè)元素的內(nèi)容區(qū)域會(huì)由于浮動(dòng)而壓縮)撵儿,除非這個(gè)元素也創(chuàng)建了一個(gè)新的?Block Formatting Context?。

3狐血、Block Formatting Context就是頁(yè)面上的一個(gè)隔離的獨(dú)立容器淀歇,容器里面的子元素不會(huì)在布局上影響到外面的元素,反之也是如此氛雪。

4房匆、根據(jù)?CSS 2.1 9.5 Floats?中的描述,創(chuàng)建了?Block Formatting Context?的元素不能與浮動(dòng)元素重疊报亩。

?表格的?border-box浴鸿、塊級(jí)的替換元素、或是在普通流中創(chuàng)建了新的?block formatting context(如元素的?'overflow'?特性不為'visible'?時(shí))的元素不可以與位于相同的?block formatting context?中的浮動(dòng)元素相重疊弦追。

5岳链、當(dāng)容器有足夠的剩余空間容納?BFC?的寬度時(shí),所有瀏覽器都會(huì)將?BFC?放置在浮動(dòng)元素所在行的剩余空間內(nèi)劲件。?

6掸哑、 在?IE6 IE7 IE8 Chrome Opera?中,當(dāng)?BFC?的寬度介于?"容器剩余寬度"?與?"容器寬度"?之間時(shí)零远,BFC?會(huì)顯示在浮動(dòng)元素的下一行苗分;在?Safari?中,BFC?則仍然保持顯示在浮動(dòng)元素所在行牵辣,并且?BFC?溢出容器摔癣;在?Firefox?中,當(dāng)容器本身也創(chuàng)建了?BFC?或者容器的?'padding-top'纬向、'border-top-width'?這些特性不都為?0?時(shí)表現(xiàn)與?IE8(S)择浊、Chrome?類似,否則表現(xiàn)與?Safari?類似逾条。?

經(jīng)驗(yàn)證琢岩,最新版本的瀏覽中只有firefox會(huì)在同一行顯示,其它瀏覽器均換行师脂。

7担孔、 在?IE6 IE7 IE8 Opera?中江锨,當(dāng)?BFC?的寬度大于?"容器寬度"?時(shí),BFC?會(huì)顯示在浮動(dòng)元素的下一行攒磨;在?Chrome Safari?中泳桦,BFC?則仍然保持顯示在浮動(dòng)元素所在行汤徽,并且?BFC?溢出容器娩缰;在?Firefox?中,當(dāng)容器本身也創(chuàng)建了?BFC?或者容器的?'padding- top'谒府、'border-top-width'?這些特性不都為?0?時(shí)表現(xiàn)與?IE8(S)?類似拼坎,否則表現(xiàn)與?Chrome?類似。

經(jīng)驗(yàn)證完疫,最新版本的瀏覽中只有firefox會(huì)在同一行顯示泰鸡,其它瀏覽器均換行。

8壳鹤、根據(jù)CSS2.1?規(guī)范第10.6.7部分的高度計(jì)算規(guī)則盛龄,在計(jì)算生成了?block formatting context?的元素的高度時(shí),其浮動(dòng)子元素應(yīng)該參與計(jì)算芳誓。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末余舶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锹淌,更是在濱河造成了極大的恐慌匿值,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赂摆,死亡現(xiàn)場(chǎng)離奇詭異挟憔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)烟号,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門绊谭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人汪拥,你說(shuō)我怎么就攤上這事达传。” “怎么了喷楣?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵趟大,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我铣焊,道長(zhǎng)逊朽,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任曲伊,我火速辦了婚禮叽讳,結(jié)果婚禮上追他,老公的妹妹穿的比我還像新娘。我一直安慰自己岛蚤,他們只是感情好邑狸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著涤妒,像睡著了一般单雾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上她紫,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天硅堆,我揣著相機(jī)與錄音,去河邊找鬼贿讹。 笑死渐逃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的民褂。 我是一名探鬼主播茄菊,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼赊堪!你這毒婦竟也來(lái)了面殖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤雹食,失蹤者是張志新(化名)和其女友劉穎畜普,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體群叶,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吃挑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了街立。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舶衬。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赎离,靈堂內(nèi)的尸體忽然破棺而出逛犹,到底是詐尸還是另有隱情,我是刑警寧澤梁剔,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布虽画,位于F島的核電站,受9級(jí)特大地震影響荣病,放射性物質(zhì)發(fā)生泄漏码撰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一个盆、第九天 我趴在偏房一處隱蔽的房頂上張望脖岛。 院中可真熱鬧朵栖,春花似錦、人聲如沸柴梆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)绍在。三九已至门扇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揣苏,已是汗流浹背悯嗓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卸察,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓铅祸,卻偏偏與公主長(zhǎng)得像坑质,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子临梗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案涡扼? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,751評(píng)論 1 92
  • 先前在學(xué)習(xí)CSS float時(shí),有同學(xué)提到了BFC這個(gè)詞盟庞,作為求知好問(wèn)的好學(xué)生吃沪,哪里不懂查哪里,那么今天就來(lái)研究一...
    這名字真不對(duì)閱讀 6,558評(píng)論 3 19
  • 什么是BFC BFC全稱是Block Formatting Context什猖,即塊格式化上下文票彪。它是CSS2.1規(guī)范...
    陌客百里閱讀 533評(píng)論 3 4
  • BFC全稱是Block Formatting Context,即塊格式化上下文不狮。它是CSS2.1規(guī)范定義的降铸,關(guān)于C...
    xf0128閱讀 337評(píng)論 0 0
  • 文/若凡 “姐推掸,這是你上學(xué)時(shí)的照片?” “喲驻仅,后面這個(gè)男孩兒好帥谅畅,誰(shuí)呀?” 表妹在屋里翻我高中時(shí)候的相冊(cè)噪服,我順著她...
    璃若凡閱讀 1,724評(píng)論 3 9