一首歌的時(shí)間輕松搞定BFC的原理及應(yīng)用

什么是BFC鞋囊?

BFC即Block Formatting Context的縮寫止后,中文翻譯過來就是塊級(jí)格式化上下文。

BFC的原理

本質(zhì)上就是BFC得渲染規(guī)則溜腐,總結(jié)起來有四點(diǎn):

  • 屬于同一個(gè)BFC的倆個(gè)相鄰的元素的margin會(huì)發(fā)生重疊
  • BFC的元素不會(huì)與浮動(dòng)元素產(chǎn)生重疊
  • BFC的元素是一個(gè)獨(dú)立的容器译株,容器內(nèi)的元素不會(huì)影響容器外部的元素,相反挺益,容器外的元素也不會(huì)影響容器內(nèi)的元素
  • 計(jì)算BFC的元素的高度的時(shí)候歉糜,浮動(dòng)元素也會(huì)參與計(jì)算

如何創(chuàng)建BFC?

  • float值不為none
  • position為absolute或fixed
  • display為inline-block,table-cell望众,table-caption匪补,flex;
  • overflow不為visible

BFC的使用場(chǎng)景

BFC的使用場(chǎng)景烂翰,緊貼BFC的原理進(jìn)行闡述夯缺。
(1) BFC的元素垂直方向的邊距會(huì)發(fā)生重疊

<style>
        * {
            padding: 0;
            margin: 0;
        }
        .container {
            /* 創(chuàng)建BFC */
            overflow: hidden;
        }
        .block {
            height: 100px;
            margin: 10px 0 30px 0;
            background: greenyellow;

        }
    </style>
    <div class="container">
        <div class="block">我是第一個(gè)BFC</div>
        <div class="block">我是第二個(gè)BFC</div>
        <div class="block">我是第三個(gè)BFC</div>
    </div>

由于BFC內(nèi)部元素的垂直方向的邊距會(huì)發(fā)生重疊,因此第一個(gè)block和第二個(gè)block相距30px甘耿,并不是40px踊兜。因此,運(yùn)行結(jié)果如下入所示棵里。


BFC_demo1.png

(2) BFC的元素不會(huì)與浮動(dòng)元素產(chǎn)生重疊

 <style>
        * {
            padding: 0;
            margin: 0;
        }
        .left {
            float: left;
            width: 200px;
            height: 400px;
            background: yellowgreen;
        }
        .right {
            height: 500px;
            background: violet;
        }
    </style>
    <div class="left"></div>
    <div class="right"></div>

運(yùn)行結(jié)果如下圖所示:


BFC_demo2.png

可以發(fā)現(xiàn)润文,right類和left類發(fā)生了重疊姐呐,若業(yè)務(wù)要求我們r(jià)ight類和left類不能重疊,相互獨(dú)立典蝌,這時(shí)候我們可以使用BFC的渲染規(guī)則曙砂,只需添加一行代碼便可達(dá)到這一目的,對(duì)代碼進(jìn)行改造骏掀。

 <style>
        * {
            padding: 0;
            margin: 0;
        }
        .left {
            float: left;
            width: 200px;
            height: 400px;
            background: yellowgreen;
        }
        .right {
            height: 500px;
            background: violet;
            /* 創(chuàng)建BFC */
            overflow: hidden;
        }
    </style>
    <div class="left"></div>
    <div class="right"></div>

查看運(yùn)行結(jié)果鸠澈,果然達(dá)到了我們想要的效果。


BFC_demo3.png

(3)計(jì)算BFC的元素的高度的時(shí)候截驮,浮動(dòng)元素也會(huì)參與計(jì)算
利用這條BFC的渲染規(guī)則笑陈,我們可以很好的利用其作清除浮動(dòng)。老規(guī)矩葵袭,上代碼涵妥。

  <style>
        * {
            padding: 0;
            margin: 0;
        }
        .parent {
            background: red;
        }
        .children {
            float: left;
            height: 300px;
            width: 400px;
            background: springgreen;
        }
    </style>
    <div class="parent">
        <div class="children"></div>
    </div>
BFC_demo4.png

從運(yùn)行結(jié)果可以看出,由于children類浮動(dòng)脫離了文檔流坡锡,因此沒有把parent類的高度撐開蓬网,parent類高度為0,沒有顯示出來鹉勒。因此我們可以利用BFC元素計(jì)算高度的時(shí)候帆锋,浮動(dòng)元素也會(huì)參與計(jì)算這一BFC渲染規(guī)則,對(duì)其進(jìn)行改造禽额,同樣是增添一行代碼锯厢,改造后的代碼如下。

 <style>
        * {
            padding: 0;
            margin: 0;
        }
        .parent {
            background: red;
            /* 創(chuàng)建BFC */
            overflow: hidden;
        }
        .children {
            float: left;
            height: 300px;
            width: 400px;
            background: springgreen;
        }
    </style>
    <div class="parent">
        <div class="children"></div>
    </div>
BFC_demo5.png

給parent類創(chuàng)建了BFC之后脯倒,在計(jì)算parent類高度的時(shí)候实辑,也會(huì)把浮動(dòng)元素的高度計(jì)算在其中,這也算是清除浮動(dòng)了吧盔憨。

如果覺得本文對(duì)你有收獲的朋友徙菠,請(qǐng)點(diǎn)個(gè)贊,接下來的日子我會(huì)繼續(xù)更新更好的技術(shù)博客郁岩!謝謝~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末婿奔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子问慎,更是在濱河造成了極大的恐慌萍摊,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件如叼,死亡現(xiàn)場(chǎng)離奇詭異冰木,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門踊沸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歇终,“玉大人,你說我怎么就攤上這事逼龟∑滥” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵腺律,是天一觀的道長奕短。 經(jīng)常有香客問我,道長匀钧,這世上最難降的妖魔是什么翎碑? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮之斯,結(jié)果婚禮上日杈,老公的妹妹穿的比我還像新娘。我一直安慰自己佑刷,他們只是感情好达椰,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著项乒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梁沧。 梳的紋絲不亂的頭發(fā)上檀何,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音廷支,去河邊找鬼频鉴。 笑死,一個(gè)胖子當(dāng)著我的面吹牛恋拍,可吹牛的內(nèi)容都是我干的垛孔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼施敢,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼周荐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起僵娃,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤概作,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后默怨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讯榕,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了愚屁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片济竹。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖霎槐,靈堂內(nèi)的尸體忽然破棺而出送浊,到底是詐尸還是另有隱情,我是刑警寧澤栽燕,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布罕袋,位于F島的核電站,受9級(jí)特大地震影響碍岔,放射性物質(zhì)發(fā)生泄漏浴讯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一蔼啦、第九天 我趴在偏房一處隱蔽的房頂上張望榆纽。 院中可真熱鬧,春花似錦捏肢、人聲如沸奈籽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽衣屏。三九已至,卻和暖如春辩棒,著一層夾襖步出監(jiān)牢的瞬間狼忱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工一睁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留钻弄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓者吁,卻偏偏與公主長得像窘俺,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子复凳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案瘤泪? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 前端開發(fā)者丨h(huán)ttp請(qǐng)求 https:www.rokub.com 前言見解有限, 如有描述不當(dāng)之處育八, 請(qǐng)幫忙指出均芽,...
    麋鹿_720a閱讀 10,889評(píng)論 11 31
  • 1. 前言 前端圈有個(gè)“梗”:在面試時(shí)单鹿,問個(gè)css的position屬性能刷掉一半人掀宋,其中不乏工作四五年的同學(xué)。在...
    YjWorld閱讀 4,425評(píng)論 5 15
  • 先前在學(xué)習(xí)CSS float時(shí),有同學(xué)提到了BFC這個(gè)詞劲妙,作為求知好問的好學(xué)生湃鹊,哪里不懂查哪里,那么今天就來研究一...
    這名字真不對(duì)閱讀 6,545評(píng)論 3 19
  • 排除條件 相關(guān)條件镣奋、相關(guān)網(wǎng)站 關(guān)聯(lián)文檔币呵、電影、PDF等等 站內(nèi)搜索
    許道龍閱讀 323評(píng)論 0 0