初識css中的BFC:塊級格式化上下文

刷面試題的時候丙号,看到BFC 完全懵逼了先朦,第一次接觸這個概念。用了css 也有半年了犬缨,美化了那么多頁面喳魏,搜索了一下,原來我們已經用它解決過好多問題了怀薛,原來他也是有專業(yè)的名字的刺彩。

概念:塊級格式化上下文:block formatting context 的定義

(W3C CSS 2.1 規(guī)范中的一個概念,它是一個獨立容器,決定了元素如何對其內容進行定位,以及與其他元素的關系和相互作用枝恋。)
一個頁面是由很多個 Box 組成的,元素的類型和 display 屬性,決定了這個 Box 的類型创倔。
不同類型的 Box,會參與不同的 Formatting Context(決定如何渲染文檔的容器),因此Box內的元素會以不同的方式渲染,也就是說BFC內部的元素和外部的元素不會互相影響。(來源菜鳥教程)

Box焚碌、Formatting Context的概念畦攘。

  1. 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;

  1. Formatting context
      Formatting context 是 W3C CSS2.1 規(guī)范中的一個概念栈虚。它是頁面中的一塊渲染區(qū)域袖外,并且有一套渲染規(guī)則,它決定了其子元素將如何定位魂务,以及和其他元素的關系和相互作用曼验。最常見的 Formatting context 有 Block fomatting context (簡稱BFC)和 Inline formatting context (簡稱IFC)。
      CSS2.1 中只有 BFCIFC, CSS3中還增加了 GFCFFC粘姜。

一鬓照、BFC的布局規(guī)則

  1. 內部的盒子會在垂直方向,一個一個地放置
  2. BFC是頁面上的一個隔離的獨立容器
  3. 屬于同一個BFC的兩個相鄰Box的上下margin會發(fā)生重疊
  4. 計算BFC的高度時孤紧,浮動元素也要參與計算
  5. 每個元素的左邊豺裆,與包含的盒子的左邊相接觸,即使存在浮動也是如此
  6. BFC的區(qū)域不會與float重疊

二号显、哪些元素會生成BFC

  1. 根元素或包含根元素的元素臭猜,即body根元素。
  2. 浮動元素押蚤,即float屬性值不為none(元素的position為absolute或fixed)蔑歌。
  3. 行內塊元素(元素的display為inline-block)。
  4. 表格單元格(元素的display為table-cell揽碘,HTML表格單元格默認為該值)次屠。
  5. 表格標題(元素的display為table-caption,HTML表格標題默認為該值)雳刺。
  6. 匿名表格單元格元素(或者元素的display為table劫灶、table-row、table-row-group掖桦、table-header-group本昏、table-footer-group(分別是HTML table、row枪汪、tbody涌穆、thead、tfoot的默認屬性)或inline-table)料饥。
  7. overflow的值不為visible的元素。
  8. display值為flow-root`的元素朱监。
  9. contain值為layout岸啡、content或strict`的元素。
  10. 彈性元素(display為flex或inline-flex元素的直接子元素)赫编。
  11. 網格元素(display為grid或inline-grid元素的直接子元素)巡蘸。
  12. 多列容器(元素的colunm-count或column-width不為auto奋隶,包括column-count為1)。
  13. column-span為all的元素始終會創(chuàng)建一個新的BFC悦荒,即使該元素沒有包裹在一個多列容器當中唯欣。

三、 BFC的作用和原理

  1. 自適應2欄布局
  2. 清除內部浮動
  3. 防止垂直 margin 重疊
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末搬味,一起剝皮案震驚了整個濱河市境氢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌碰纬,老刑警劉巖萍聊,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悦析,居然都是意外死亡寿桨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門强戴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亭螟,“玉大人,你說我怎么就攤上這事骑歹≡だ樱” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵陵刹,是天一觀的道長默伍。 經常有香客問我,道長衰琐,這世上最難降的妖魔是什么也糊? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮羡宙,結果婚禮上狸剃,老公的妹妹穿的比我還像新娘。我一直安慰自己狗热,他們只是感情好钞馁,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匿刮,像睡著了一般僧凰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熟丸,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天训措,我揣著相機與錄音,去河邊找鬼。 笑死绩鸣,一個胖子當著我的面吹牛怀大,可吹牛的內容都是我干的。 我是一名探鬼主播呀闻,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼化借,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捡多?” 一聲冷哼從身側響起蓖康,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎局服,沒想到半個月后钓瞭,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡淫奔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年山涡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唆迁。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸭丛,死狀恐怖,靈堂內的尸體忽然破棺而出唐责,到底是詐尸還是另有隱情鳞溉,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布鼠哥,位于F島的核電站熟菲,受9級特大地震影響,放射性物質發(fā)生泄漏朴恳。R本人自食惡果不足惜抄罕,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望于颖。 院中可真熱鬧呆贿,春花似錦、人聲如沸森渐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽同衣。三九已至竟块,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間耐齐,已是汗流浹背浪秘。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工前弯, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秫逝。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像询枚,于是被迫代替她去往敵國和親违帆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355