摘要:一直都知道可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有這么個(gè)東西,寫這篇文章一是為了加深記憶,二是為了加深理解。解決方案如下給添加一個(gè)屬性便會(huì)避開(kāi)計(jì)算內(nèi)層元素的高度。但如果高度有具體的值時(shí),高度超過(guò)時(shí)還是會(huì)被裁剪。
一直都知道overflow可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有BFC這么個(gè)東西,寫這篇文章一是為了加深記憶,二是為了加深理解。
什么是BFC?
BFC的全稱是Block Formatting Context 塊級(jí)格式化上下文。
一般情況下BFC只存在于根級(jí)元素,但有時(shí)我們?cè)谠O(shè)置某些CSS屬性時(shí)也會(huì)產(chǎn)生BFC。但是前提是必須是塊級(jí)元素。
以下屬性聲明會(huì)產(chǎn)生BFC:
1、float不為none
2、overflow不為visible
3、position不為static和relative
4、display為inline-block table-cell table-caption
5、flex、inline-flex布局
BFC布局規(guī)則
1、內(nèi)部元素會(huì)垂直排列
2、垂直方向的間隔由margin決定,同一個(gè)BFC里同級(jí)別的兩個(gè)元素之間的margin會(huì)產(chǎn)生坍塌
3、元素會(huì)靠在外層元素的左邊或者右邊,float同理
4、BFC不會(huì)與float重疊(absolute,fixed除外)
5、BFC計(jì)算高度時(shí),float元素的高度也參與計(jì)算
6、BFC是隔離的,它里面元素就算翻江倒海也不會(huì)影響外層,外層的各種變化也不會(huì)影響B(tài)FC。
BFC應(yīng)用
解決margin坍塌
elementA與elementB之間的實(shí)際margin為10px;
在elementB的外層添加一個(gè)div設(shè)置BFC屬性,此時(shí)elementA, elementB的間隔為20px,代碼如下:
解決float覆蓋
123
以上代碼中,elmentA會(huì)覆蓋到elementB上。
解決方案如下,給elementB添加一個(gè)BFC屬性elementB便會(huì)避開(kāi)elementA:
123
計(jì)算內(nèi)層float元素的高度。
上述代碼中,wrapper是沒(méi)有高度的,雖然子元素設(shè)置了高度為100px,但是由于子元素是float所以父元素沒(méi)有高度。
解決方案如下,給wrapper添加一個(gè)BFC屬性,這時(shí)wrapper的高度就為子元素的高度:
對(duì)overflow:hidden的額外說(shuō)明
當(dāng)設(shè)置了一個(gè)元素為樣式為:
overflow:hidden height:auto
元素首先會(huì)計(jì)算出自己的高度才知道應(yīng)該裁剪哪一部分,當(dāng)生成BFC時(shí)會(huì)首先計(jì)算里面元素的高度,當(dāng)里面有float元素時(shí)會(huì)計(jì)算float元素的高度,并把float元素的高度加到自身高度中。但如果高度有具體的值時(shí),float高度超過(guò)時(shí)還是會(huì)被裁剪。
對(duì)position:absolute以及position:fixed的額外說(shuō)明
在本文前面提到過(guò) BFC的區(qū)域不會(huì)和float區(qū)域重疊,但是absolute和fixed布局有例外。absolute和fixed會(huì)覆蓋到float元素上,因?yàn)閍bsolute和fixed已經(jīng)脫離文檔流。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/52114.html
摘要:一直都知道可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有這么個(gè)東西,寫這篇文章一是為了加深記憶,二是為了加深理解。解決方案如下給添加一個(gè)屬性便會(huì)避開(kāi)計(jì)算內(nèi)層元素的高度。但如果高度有具體的值時(shí),高度超過(guò)時(shí)還是會(huì)被裁剪。 一直都知道overflow可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有BFC這么個(gè)東西,寫這篇文章一是為了加深記憶,二是為了加深理解。 ...
摘要:標(biāo)準(zhǔn)盒模型與盒模型開(kāi)發(fā)者們都知道,由于歷史遺留問(wèn)題與既定標(biāo)準(zhǔn)的發(fā)展,存在著兩個(gè)盒模型。即的標(biāo)準(zhǔn)盒模型以及的怪異盒模型。在中,可以用去定義元素的盒模型。比較這兩個(gè)盒模型的差異之前,我們先來(lái)看一張圖先不討論寬高,我們把一個(gè)元素的組成分為。 標(biāo)準(zhǔn)盒模型與IE盒模型 開(kāi)發(fā)者們都知道,由于歷史遺留問(wèn)題與既定標(biāo)準(zhǔn)的發(fā)展,存在著兩個(gè)css盒模型。即W3C的標(biāo)準(zhǔn)盒模型以及IE的怪異盒模型。在css中,...
摘要:最常見(jiàn)的有簡(jiǎn)稱和簡(jiǎn)稱。計(jì)算的高度時(shí),浮動(dòng)元素也參與計(jì)算。遇到這種情形,我們?nèi)绾翁幚硖幚矸椒ㄆ鋵?shí)有很多,在元素中添加或者使其父元素形成一個(gè)也可以在元素中添加或是這些都可以有效解決父子元素重疊問(wèn)題。解決這個(gè)問(wèn)題,只需要把把父元素變成一個(gè)就行了。 一、什么是BFC Formatting context 是 W3C CSS2.1 規(guī)范中的一個(gè)概念。它是頁(yè)面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,...
摘要:最常見(jiàn)的有簡(jiǎn)稱和簡(jiǎn)稱。計(jì)算的高度時(shí),浮動(dòng)元素也參與計(jì)算。遇到這種情形,我們?nèi)绾翁幚硖幚矸椒ㄆ鋵?shí)有很多,在元素中添加或者使其父元素形成一個(gè)也可以在元素中添加或是這些都可以有效解決父子元素重疊問(wèn)題。解決這個(gè)問(wèn)題,只需要把把父元素變成一個(gè)就行了。 一、什么是BFC Formatting context 是 W3C CSS2.1 規(guī)范中的一個(gè)概念。它是頁(yè)面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,...
摘要:最常見(jiàn)的有簡(jiǎn)稱和簡(jiǎn)稱。計(jì)算的高度時(shí),浮動(dòng)元素也參與計(jì)算。遇到這種情形,我們?nèi)绾翁幚硖幚矸椒ㄆ鋵?shí)有很多,在元素中添加或者使其父元素形成一個(gè)也可以在元素中添加或是這些都可以有效解決父子元素重疊問(wèn)題。解決這個(gè)問(wèn)題,只需要把把父元素變成一個(gè)就行了。 一、什么是BFC Formatting context 是 W3C CSS2.1 規(guī)范中的一個(gè)概念。它是頁(yè)面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,...
閱讀 635·2021-10-27 14:15
閱讀 1162·2021-10-15 09:42
閱讀 2741·2019-08-30 15:53
閱讀 1280·2019-08-23 17:02
閱讀 2955·2019-08-23 16:23
閱讀 3170·2019-08-23 15:57
閱讀 3457·2019-08-23 14:39
閱讀 512·2019-08-23 14:35