摘要:初探什么是全稱是塊級(jí)格式化上下文,是可視化渲染的一部分,它是塊級(jí)盒子的布局發(fā)生,浮動(dòng)互相交互的部分。可以把父元素設(shè)置成這樣可以使這個(gè)元素包含其浮動(dòng)子元素。而浮動(dòng)元素本身是脫離文檔流的,非元素的高度計(jì)算是不會(huì)把浮動(dòng)元素計(jì)算在內(nèi)。
bfc初探 什么是bfc
bfc全稱是塊級(jí)格式化上下文(block formating context),是web可視化css渲染的一部分,它是塊級(jí)盒子的布局發(fā)生,浮動(dòng)互相交互的部分。
我所理解的bfc本質(zhì)上是一個(gè)透明的箱子,我們完全看不到這個(gè)箱子,但是這個(gè)箱子是獨(dú)立于外部其他容器而存在的,在這個(gè)箱子內(nèi)部有bfc內(nèi)部自己的渲染邏輯。
bfc布局規(guī)則bfc內(nèi)的元素一次從上往下排列。
bfc垂直方向的距離有margin決定,且相鄰兩個(gè)元素寬度會(huì)發(fā)生折疊
bfc內(nèi)部的元素的左邊框總是與容器的左邊框重合,浮動(dòng)也不例外
bfc不會(huì)與float box重疊
計(jì)算bfc的高度,浮動(dòng)也會(huì)計(jì)算在內(nèi)
BFC就是頁面上的一個(gè)隔離的獨(dú)立容器,容器里面的子元素不會(huì)影響到外面的元素。反之也如此。
觸發(fā)bfc的條件根元素或者包含根源的元素
float不為none
dispaly為absolute或者fixed
overflow不為visiable
dispaly為inline-block或者table-cell或者table-caption
bfc的應(yīng)用場景如果不創(chuàng)建bfc。浮動(dòng)元素的父元素的高度會(huì)是0,給父元素加一個(gè)overflow:hidden。可以把父元素設(shè)置成bfc,這樣可以使這個(gè)元素包含其浮動(dòng)子元素。
//htmlp1
p2
//css .floatdiv1{ width: 200px; overflow: hidden; background-color: green; border: 1px solid red; margin-bottom: 40px; } .floatdiv2{ width: 200px; background-color: yellow; border: 1px solid blue; margin-bottom: 40px; } .floatdiv1 p , .floatdiv2 p{ float: left; width: 50px; background-color: pink; height: 50px; margin: 10px; }p3
p4
計(jì)算bfc的高度的時(shí)候,浮動(dòng)元素也會(huì)參與計(jì)算。而浮動(dòng)元素本身是脫離文檔流的,非bfc元素的高度計(jì)算是不會(huì)把浮動(dòng)元素計(jì)算在內(nèi)。
正常情況下,如果一個(gè)塊級(jí)元素設(shè)置成了float,那么他的兄弟元素會(huì)環(huán)繞其布局。
//html//css .outer{ width: 200px; } .inner1{ float: left; height: 50px; width: 50px; background-color: orange; } .inner2{ background-color: cadetblue; height: 200px; //overflow: hidden; 這里設(shè)置overflow的話就會(huì)讓inner成為一個(gè)bfc }
如果inner2設(shè)置了overflow屬性,看到效果是下面的圖
inner會(huì)環(huán)繞在浮動(dòng)元素div周圍,因?yàn)橥粋€(gè)bfc中,元素左邊總是觸碰到容器的左邊,即使存在浮動(dòng)也是如此。如果不想這樣,可以給文字一個(gè)overflow:hidden。這樣文字所在的區(qū)域就成了一個(gè)bfc,bfc是不會(huì)和float元素重疊的。
外邊距折疊的情況:
防止外邊距折疊的問題的方法是給bfc內(nèi)部再寫一個(gè)bfc。
//外邊距折疊的情況 //html//css .div1{ width: 200px; background-color: blue; } .div1 p{ height: 50px; margin: 10px 0; background-color: orange; }
解決方案是,把p標(biāo)簽多帶帶寫進(jìn)一個(gè)個(gè)的bfc里面,比如在p外邊包一層overflow是hidden的div。這樣的話,兩個(gè)p標(biāo)簽不屬于一個(gè)bfc,就不會(huì)發(fā)生margin折疊的情況。
//html//css .div1{ width: 200px; background-color: blue; } p{ height: 50px; margin: 10px 0; background-color: orange; overflow: hidden; } .div2{ overflow: hidden; }
//把第三個(gè)p標(biāo)簽寫進(jìn)一個(gè)bfc中,這樣的話,第二個(gè)p和第三個(gè)p就不會(huì)發(fā)生折疊,行距是雙倍的行距而不是單倍的。
如果上下的外邊距都是正的,間隔距離取外邊距的最大值
如果上下的外邊距都是負(fù)的,間隔距離取外邊距絕對(duì)值大的
如果上下的外邊距一正一副,間隔距離是相加的和
元素必須是塊級(jí)盒子,block,list-item table
元素必須是常規(guī)文檔流,且處在同一個(gè)bfc中
必須是垂直方向上相鄰的元素,這兩個(gè)是觸發(fā)折疊的必要條件
不處在一個(gè)bfc中不會(huì)觸發(fā)bfc
另外,浮動(dòng)元素,position是absolute或者fixed的元素不會(huì)出現(xiàn)這種情況,因?yàn)椴皇浅R?guī)文檔流
如果一個(gè)父元素含有padding或border,那么他與其第一個(gè)子元素不會(huì)發(fā)生折疊
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/112233.html
摘要:就是神奇之一,它也是最熟悉的陌生人,因?yàn)槟阋徊恍⌒木蜁?huì)觸發(fā)它然而你并沒有意識(shí)到它正在神奇地發(fā)揮作用。最常見的有和,中還增加了和,這里就不深入研究了。其根本原理就是它們處于同一個(gè),符合屬于同一個(gè)的兩個(gè)相鄰元素的會(huì)發(fā)生重疊的規(guī)則。 BFC,你也許聽過這個(gè)詞,但是你可能不是很有底氣地解釋清楚。寫樣式的時(shí)候,往往加了一個(gè)樣式或者改了一個(gè)屬性,就能達(dá)到你期望的效果,一切都是如此地神奇。BFC就是...
摘要:歡迎來我的個(gè)人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開啟性能優(yōu)化之旅高性能滾動(dòng)及頁面渲染優(yōu)化理論寫法對(duì)壓縮率的影響唯快不破應(yīng)用的個(gè)優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁瞬開緩存網(wǎng)頁性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動(dòng) 歡迎來我的個(gè)人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開啟性能優(yōu)化之旅 高性能滾動(dòng) scroll 及頁面渲染優(yōu)化 理論 | HTML寫法...
摘要:歡迎來我的個(gè)人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開啟性能優(yōu)化之旅高性能滾動(dòng)及頁面渲染優(yōu)化理論寫法對(duì)壓縮率的影響唯快不破應(yīng)用的個(gè)優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁瞬開緩存網(wǎng)頁性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動(dòng) 歡迎來我的個(gè)人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開啟性能優(yōu)化之旅 高性能滾動(dòng) scroll 及頁面渲染優(yōu)化 理論 | HTML寫法...
摘要:歡迎來我的個(gè)人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開啟性能優(yōu)化之旅高性能滾動(dòng)及頁面渲染優(yōu)化理論寫法對(duì)壓縮率的影響唯快不破應(yīng)用的個(gè)優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁瞬開緩存網(wǎng)頁性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動(dòng) 歡迎來我的個(gè)人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開啟性能優(yōu)化之旅 高性能滾動(dòng) scroll 及頁面渲染優(yōu)化 理論 | HTML寫法...
摘要:元素的特性全稱為,中文為塊級(jí)格式化上下文。應(yīng)用之利用特性解決塌陷問題塌陷是一般指在標(biāo)準(zhǔn)文檔流中,兩個(gè)垂直排列的元素,一設(shè)置個(gè),另一個(gè)設(shè)置,此時(shí)兩個(gè)元素的就會(huì)發(fā)生重疊。 1、元素的BFC特性 BFC全稱為Block Formartting Context,中文為塊級(jí)格式化上下文。它是頁面中的一塊獨(dú)立的渲染環(huán)境,并且有一套渲染規(guī)則,它決定了其子元素將如何定位,以及它和其他兄弟元素的關(guān)系和相...
閱讀 1344·2023-04-26 00:35
閱讀 2714·2023-04-25 18:32
閱讀 3344·2021-11-24 11:14
閱讀 770·2021-11-22 15:24
閱讀 1417·2021-11-18 10:07
閱讀 6466·2021-09-22 10:57
閱讀 2773·2021-09-07 09:58
閱讀 3565·2019-08-30 15:54