BFC應(yīng)用詳解

BFC是什么?BFC如何生成?

1.BFC(Block Formatting Context )塊級(jí)格式化上下文。BFC是CSS里的一種規(guī)則。
2.生成BFC的方法:1)display:flex,display:inline-block,dispaly:inline-flex,display:table-cell,display:table-caption。 這幾種中的任意一種。2)position為fixed或absolute。 3)overflow不為visible。4)本質(zhì)上根元素也會(huì)生成BFC。

BFC作用

  • 當(dāng)同一個(gè)BFC中的兩個(gè)盒子同時(shí)具有相對(duì)方向的外邊距時(shí),外邊距會(huì)發(fā)生疊加(Margin Collapse),當(dāng)兄弟盒子的外邊距不一樣時(shí),將以最大的那個(gè)外邊距為準(zhǔn)。


    同一BFC外邊距合并
    同一BFC外邊距合并

    不同BFC外邊距不合并
    不同BFC外邊距不合并
  • BFC清除浮動(dòng):計(jì)算BFC的高度時(shí),浮動(dòng)元素也參與計(jì)算


    浮動(dòng)父容器塌陷
    浮動(dòng)父容器塌陷

    BFC清除浮動(dòng)
    BFC清除浮動(dòng)
  • 根據(jù)BFC的區(qū)域不會(huì)與float box重疊,實(shí)現(xiàn)自適應(yīng)兩欄布局。


    自適應(yīng)兩欄布局
    自適應(yīng)兩欄布局

BFC解決父子關(guān)系外邊距合并的方法

父子關(guān)系外邊距合并
父子關(guān)系外邊距合并

如上圖所示:邊距合并造成了,和我們預(yù)期的效果不一樣。即容器之間margin為20px,父容器內(nèi)部H1邊距為40px.

解決方法:

邊框法
邊框法

內(nèi)邊距法
內(nèi)邊距法

行內(nèi)塊法
行內(nèi)塊法

浮動(dòng)法
浮動(dòng)法

利用BFC解決父子級(jí)外邊距合并的方法很多,但是相對(duì)應(yīng)的也會(huì)帶來(lái)一些影響,例如inline-block會(huì)導(dǎo)致收縮,縫隙,2.浮動(dòng)導(dǎo)致容器浮動(dòng),
3.絕對(duì)定位導(dǎo)致脫離文檔流(注意只有absolute,和fixed有效,relative不會(huì)產(chǎn)生效果)。還有display為table等等。相對(duì)影響較小的方法是overflow:hidden,和overflow:auto,但是在對(duì)應(yīng)的場(chǎng)景下還會(huì)產(chǎn)生影響,例如需要下拉菜單時(shí),就不應(yīng)該設(shè)置overflow:hidden。

選擇對(duì)場(chǎng)景影響最小的方案才是王道!

代碼

外邊距合并
外邊距不合并
父容器塌陷
父容器形成BFC清除浮動(dòng)
自適應(yīng)兩欄布局

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,193評(píng)論 1 92
  • 一、在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例 在CSS當(dāng)中,相...
    dengpan閱讀 703評(píng)論 0 0
  • 一,浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型,浮動(dòng)...
    DeeJay_Y閱讀 1,007評(píng)論 0 4
  • relative:生成相對(duì)定位的元素,通過(guò)top,bottom,left,right的位置相對(duì)于其正常位置進(jìn)行定位...
    zx9426閱讀 1,082評(píng)論 0 2
  • 前言 本文包括以下內(nèi)容: 什么是BFC 如何產(chǎn)生BFC BFC的特點(diǎn) 應(yīng)用BFC 1、什么是BFC BFC (Bl...
    jazenye閱讀 1,072評(píng)論 0 1

友情鏈接更多精彩內(nèi)容