一文搞懂CSS中的BFC是什么坑律?

個人理解

1、BFC是一個獨立的布局環(huán)境,BFC內(nèi)部的元素布局與外部互不影響晃择;

2冀值、可以通過一些條件觸發(fā)BFC,從而實現(xiàn)布局上的需求或解決一些問題宫屠;

3列疗、可以將BFC想象成一個工具,無需探究其定義浪蹂,只要著重理解其功能(特性)即可抵栈。

二、BFC有什么用坤次?

BFC的觸發(fā)條件

1古劲、根元素(<html>)

2、float值非none

3缰猴、overflow值非visible

4产艾、display值為inline-block、table-cell滑绒、table-caption闷堡、flex、inline-flex

5疑故、position值為absolute缚窿、fixed

BFC的特性

1、屬于同一個BFC的兩個相鄰容器的上下margin會重疊(重點)

2焰扳、計算BFC高度時浮動元素也參于計算(重點)

3、BFC的區(qū)域不會與浮動容器發(fā)生重疊(重點)

4误续、BFC內(nèi)的容器在垂直方向依次排列

5吨悍、元素的margin-left與其包含塊的border-left相接觸

6、BFC是獨立容器蹋嵌,容器內(nèi)部元素不會影響容器外部元素

BFC功能總結(jié)

1育瓜、可以利用BFC解決兩個相鄰元素的上下margin重疊問題;

2栽烂、可以利用BFC解決高度塌陷問題躏仇;

3、可以利用BFC實現(xiàn)多欄布局(兩欄腺办、三欄焰手、圣杯、雙飛翼等)怀喉。

開啟bfc之后

1.開啟BFC 的元素不會被浮動元素所覆蓋
2.開啟BFC的元素子元素和父元素外邊距不會重疊
3.開啟BFC的元素可以包含浮動的子元素

常見margin重疊的兩種方式:

  • 相鄰兩個相鄰Box的margin


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>解決margin重疊</title>
        <style>
            *{
                margin:0;
                padding: 0;
            }
            .up,.down{
                width:200px;
                height: 200px;
                background: pink;
                margin:50px;
            }
        </style>
    </head>
    <body>
        <div class="up"></div>
        <div class="down"></div>
    </body>
</html>

效果圖


image.png

解決辦法:

在外層包一層div解決margin重疊书妻,overflow:hidden開啟新的BFC,使其不屬于同一個BFC躬拢。

<body>
        <div class="up"></div>
        <div style="overflow: hidden;">
          <div class="down"></div>
        </div>
    </body>

image.png
  • 子父margin重疊:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>子父margin問題</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .wrap{
            width:300px;
            height: 300px;
            background: pink;
            /*overflow: hidden;*/
            /* border:1px solid black; */
        }
        .inner{
            width:150px;
            height: 150px;
            background: green;
            margin:50px auto;
            
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="inner">    
        </div>
    </div>
</body>
</html>

image.png

解決辦法:

1躲履、在父節(jié)點中 overflow:hidden開啟新的BFC
2见间、在父節(jié)點外邊描一個1px的框,隔開不在同一個BFC


image.png

什么是高度塌陷工猜?怎么通過bfc解決米诉?

在浮動布局中,父元素的高度默認是被子元素撐開的篷帅,當子元素完全脫離文檔流史侣,子元素從文檔流中脫離將會無法撐起父元素的高度,導致父元素的高度丟失犹褒。父元素高度丟失以后抵窒,其下的元素會自動上移,導致頁面的布局混亂叠骑。這就是高度塌陷李皇。

image.png

解決高度塌陷的方法,在發(fā)生塌陷的元素上:

  • 1 將父元素的高度固定(但不推薦宙枷,因為在后續(xù)更改樣式會不太方便)
  • 2 在父元素結(jié)尾添加一個空的div,因為這個空的div并沒有浮動掉房,可將父元素內(nèi)容撐 開,但會導致頁面結(jié)構(gòu)增加
  • 3 使用after偽類解決高度塌陷
.box1::after{
content:'';   ——內(nèi)容不顯示慰丛,無內(nèi)容顯示
display:block; ——after元素是一個行內(nèi)元素卓囚,將它顯示為一個塊元素
}

2.開啟BFC
BFC(間接 開啟,或多或少會有一些不好的影響)BFC是一個CSS中的一個隱含的屬性诅病,可以為一個元素開啟BFC哪亿,開啟BFC該元素會變成一個獨立的布局區(qū)

開局已經(jīng)說了怎么開啟bfc了
1.設(shè)置元素的浮動(不推薦用來開啟BFC)例如: float:left;
2.將元素設(shè)置為行內(nèi)塊元素(不推薦用來開啟BFC)例如: display:inline-block;
3.將元素的overflow設(shè)置為一個非visible的值 overflow:hidden;
常用的方式為元素設(shè)置overflow:hidden;開啟其BFC,以使其可以包含住它的子元素

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贤笆,隨后出現(xiàn)的幾起案子蝇棉,更是在濱河造成了極大的恐慌,老刑警劉巖芥永,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件篡殷,死亡現(xiàn)場離奇詭異,居然都是意外死亡埋涧,警方通過查閱死者的電腦和手機板辽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棘催,“玉大人劲弦,你說我怎么就攤上這事〈及樱” “怎么了瓶您?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我呀袱,道長贸毕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任夜赵,我火速辦了婚禮明棍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寇僧。我一直安慰自己摊腋,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布嘁傀。 她就那樣靜靜地躺著兴蒸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪细办。 梳的紋絲不亂的頭發(fā)上橙凳,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音笑撞,去河邊找鬼岛啸。 笑死,一個胖子當著我的面吹牛茴肥,可吹牛的內(nèi)容都是我干的坚踩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓤狐,長吁一口氣:“原來是場噩夢啊……” “哼瞬铸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起础锐,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赴捞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后郁稍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡胜宇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年耀怜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐愉。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡财破,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出从诲,到底是詐尸還是另有隱情左痢,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站俊性,受9級特大地震影響略步,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜定页,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一趟薄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧典徊,春花似錦杭煎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至儡毕,卻和暖如春也切,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妥曲。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工贾费, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檐盟。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓褂萧,卻偏偏與公主長得像,于是被迫代替她去往敵國和親葵萎。 傳聞我的和親對象是個殘疾皇子导犹,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

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