BFC

今天部門請前端工程師給后端工程師們做了一場主題為《帶你了解H5——基礎篇》。嗯,的確很基礎,絕大多數(shù)都是我知道的,但是聽到了一個完全不熟悉的詞:BFC,聽完培訓有幾個模糊的印象:

  • 給元素設置了<code>overflow:hidden</code>,貌似就是BFC了
  • BFC可以解決margin重疊的問題
  • BFC可以解決浮動元素撐不開父級元素的問題
  • BFC可以解決側(cè)邊欄問題

正好今天的任務除了需求外,沒數(shù)據(jù)、沒接口、沒文檔,實在無法展開工作,我就在網(wǎng)上搜了一些文章學習了一下。雖然別人已經(jīng)寫得很好了,但那是別人的,我還是想自己稍微整理一下,寫篇記錄,以加深自己對BFC的理解。

什么是BFC

浮動元素和絕對定位元素,非塊級盒子的塊級容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不為“visiable”的塊級盒子,都會為他們的內(nèi)容創(chuàng)建新的塊級格式化上下文(block formatting context)。

所以,BFC不是CSS樣式,而是元素渲染的一種類型,共有四種類型:BFC、IFC、FFC、GFC,詳見瀏覽器上下文渲染之 BFC、IFC、FFC、GFC

成為BFC的條件

  • float的值不為none
  • overflow 除了visible 以外的值(hidden,auto,scroll )
  • position值為(absolute,fixed)不為static或者relative
  • display的值為 table-cell, table-caption, inline-block,flex, 或者 inline-flex中的其中一個
  • fieldset元素

BFC的特性

1.BFC內(nèi)部,盒子由上至下按順序進行排列,其間隙由盒子的外邊距決定,并且,當<b>同一個BFC</b>中的兩個盒子同時具有相對方向的外邊距時,其外邊距還會發(fā)生<b>疊加</b>(Margin Collapse)
2.BFC內(nèi)部,無論是浮動盒子還是普通盒子,其左<b>總是</b>與包含塊的左邊相接觸
3.BFC 區(qū)域<b>不會</b>與float box區(qū)域相疊加
4.BFC內(nèi)外布局<b>不會</b>相互影響
5.計算BFC高度的時候,浮動元素的高度也計算<b>在內(nèi)</b>

觸發(fā)BFC

1.display: table 前后帶有換行符,我們一般也不常用

需要注意的是,display:table 本身并不會創(chuàng)建BFC,但是它會產(chǎn)生匿名框(anonymous boxes),而匿名框中的display:table-cell可以創(chuàng)建新的BFC,換句話說,觸發(fā)塊級格式化上下文的是匿名框,而不是display:table。所以通過display:table和display:table-cell創(chuàng)建的BFC效果是不一樣的。

2.overflow: scroll 可能會出現(xiàn)不想要的滾動條,丑
3.float: left 萬一我們不想讓元素浮動呢?
4.overflow: hidden比較完美的創(chuàng)建BFC的方案,副作用較小,仿佛遇到了我的心動女生

BFC能解決的問題

1.margin collapse(外邊距疊加)
2.清除浮動
3.實現(xiàn)兩欄布局

參考文章:
css中的BFC
overflow 與布局上下文(BFC)
那些年我們一起清除過的浮動

另外,今天的培訓還學到一個詞,叫Flex布局,其實早在2014年的時候吧就聽說過了,一直沒用過,一直也沒有去學習一下,嗯,先記著,下次有時間一定要學習一下。
Flex 布局教程:語法篇
Flex 布局教程:實例篇

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,786評論 1 92
  • 先前在學習CSS float時,有同學提到了BFC這個詞,作為求知好問的好學生,哪里不懂查哪里,那么今天就來研究一...
    這名字真不對閱讀 6,572評論 3 19
  • 一、BFC是什么? 它是 Block Formatting Context (塊級格式化上下文) 的簡稱,接下來通...
    07120665a058閱讀 3,814評論 15 40
  • relative:生成相對定位的元素,通過top,bottom,left,right的位置相對于其正常位置進行定位...
    zx9426閱讀 963評論 0 2
  • 1.背景介紹 BFC全稱是Block Formatting Context,是CSS2.1規(guī)范定義的,關于CSS渲...
    你隔壁的陌生人閱讀 1,149評論 0 0