成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

CSS之BFC

Jinkey / 1456人閱讀

摘要:比如說最常見的塊級元素內(nèi)聯(lián)元素文檔模型層疊樣式模型盒子模型等,但還有一種規(guī)范經(jīng)常會被排除在規(guī)范的認(rèn)知之外。屬于同一個的兩個相鄰的會發(fā)生重疊。計算的高度時,浮動元素也參與計算。垂直方向的距離由決定,利用這一點(diǎn)可以解決塌陷問題。

對于很多初學(xué)者來說,CSS是不講“道理”的,但是如果去深究,會發(fā)現(xiàn)其實CSS是有一定道理的。
比如說最常見的塊級元素、內(nèi)聯(lián)元素、文檔模型、層疊樣式模型、盒子模型CSS等,但還有一種FC規(guī)范經(jīng)常會被排除在CSS規(guī)范的認(rèn)知之外。

FC

FC當(dāng)然不是“Fuck”的意思,英文名是“Formatting Context”,也就是格式化上下文,他是頁面中的一塊渲染區(qū)域,在這個區(qū)域內(nèi),有一套獨(dú)立的渲染規(guī)則,它決定了其子元素將如何布局,以及和其他元素的關(guān)系和相互作用,并且父級元素對它不能產(chǎn)生影響。

“FC”可以簡單的理解為瀏覽器對于某個元素樣式的一種處理方法,不能被開發(fā)者顯式的修改,符合FC規(guī)則的會計元素元素的屬性對于內(nèi)部與外部元素會表現(xiàn)出一定的特性”。

FC分為BFC、IFC、FFC、GFC四種類型。其中FFC、GFC是CSS3中才有的類型,后面將一一進(jìn)行講解。

BFC

BFC全稱“Block Formatting Contexts”翻譯過來就是“塊級格式化上下文”。

符合以下任一條件即會生成一個“BFC”

根元素,HTML

float屬性不為none

overflow屬性不為visible

display屬性為inline-block、table-cell、table-caption

position屬性為absolute或者fixed

還有其他條件也會觸發(fā)BFC,這里只列了幾種比較常見的情況,有興趣的可以看一下MDN說明:https://developer.mozilla.org/zh-CN/docs/Web/Guide/CSS/Block_formatting_context

BFC布局規(guī)則

內(nèi)部的Box會在垂直方向,一個接一個地放置。

Box垂直方向的距離由margin決定。屬于同一個BFC的兩個相鄰Box的margin會發(fā)生重疊。

每個元素的margin box的左邊, 與包含塊border box的左邊相接觸,即使存在浮動也是如此。

BFC的區(qū)域不會與設(shè)置了float屬性值的兄弟元素重疊。

BFC就是頁面上的一個隔離的獨(dú)立容器,容器里面的子元素不會影響到外面的元素。反之也如此。

計算BFC的高度時,浮動元素也參與計算。

下面通過幾個例子,只需要幾分鐘可以明白BFC能幫我們做什么。

通過BFC清除浮動
.f-l { float: left; }
.warp { border: 1px solid red; display: inline-block; }
.div-1 { width: 100px; height: 100px; background: green; }
.div-2 { width: 200px; height: 200px; background: yellow; }


最外層元素將“display”屬性設(shè)置成了“inline-block”,隱性的形成了BFC。
BFC中的元素計算高度時浮動元素也是會參與計算的,達(dá)到了清除浮動的效果。

解決margin塌陷
.warp { background: black; display: inline-block; width: 200px; height: 200px; }
.div-1 { margin-top: 20px; width: 100px; height: 100px; background: green; } 


如果不符合BFC規(guī)范,會產(chǎn)生下面的效果,也就是“margin塌陷”。
所謂“margin塌陷”就是指CSS規(guī)則中,父元素與子元素頂部起始點(diǎn)在未加margin前是同一坐標(biāo)的情況下,子元素的margin會影響父元素。

Box垂直方向的距離由margin決定,利用這一點(diǎn)可以解決margin塌陷問題。

經(jīng)典兩列布局
.warp { border: 1px solid red; }
.left { float: left; width: 150px; height: 200px; background: green; }
.right { overflow: hidden; height: 200px; background: yellow; }


BFC的區(qū)域不會與設(shè)置了float屬性值的兄弟元素重疊。
利用這一點(diǎn)可以輕松的實現(xiàn)經(jīng)典左右布局。

最后總結(jié)

利用BFC還可以做很多其他的事情,例如:元素間上下margin間距問題、浮動元素高度計算問題

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/114336.html

相關(guān)文章

  • 深入理解cssBFC

    摘要:屬性,會破壞文檔流,與非定位元素很難結(jié)合起來用,因此也不適合自適應(yīng)布局。,其對無感,無法自適應(yīng)剩余瀏覽器空間??偨Y(jié)的定義,就如同結(jié)界一樣,完全封閉對外無任何影響。引起的各種屬性與自適應(yīng)布局自適應(yīng)布局與屬性說明 BFC的定義 BFC的全稱是block formatting context(塊狀格式化上下文),當(dāng)BFC起作用的時候,其元素內(nèi)部無論怎么翻江倒海都不會影響到外部元素,同樣,外部...

    姘擱『 評論0 收藏0
  • 前端進(jìn)階什么是BFC?BFC的原理是什么?如何創(chuàng)建BFC?

    摘要:官方說法就是它規(guī)定了用戶端在媒介中如何處理文檔樹。是的包含塊,同時又是的包含塊,不是絕對的。因此稱為匿名盒子。行內(nèi)盒子行內(nèi)級元素會生成行內(nèi)級盒子,該盒子同時會參與行內(nèi)格式化上下文的創(chuàng)建。如果只有一個值指定為,則其使用的值來自相等。 作者:陳大魚頭 github: KRISACHAN 盒模型 The CSS box model describes the rectangular b...

    lowett 評論0 收藏0
  • CSS 小結(jié)筆記BFC

    摘要:必須表現(xiàn)為一塊一塊的,才能給出一個隔離的空間。觸發(fā)的具體條件光有的潛質(zhì),不代表就直接會觸發(fā)。最后,一般設(shè)置最常用的就是給盒子加上因為這樣的寫法基本上不會對原有的其他樣式產(chǎn)生影響。BFC 即為Block formatting context 的縮寫,BFC 主要用來將一個盒子設(shè)置為一個隔離的容器,不管盒子內(nèi)部的元素具有什么屬性,都不會影響到盒子的外面。 1、哪些元素能產(chǎn)生BFC 不是所有的元素...

    番茄西紅柿 評論0 收藏0
  • 整理cssBFC原理

    摘要:通過格式化上下文后可以將脫離了普通流的元素隔離,使其不會與外界的元素相互隔離。第一次寫,寫得不好請大家多多指教哈哈哈哈 首先回顧下CSS常出現(xiàn)的幾個樣式問題1當(dāng)子元素添加上邊距時,父元素也會向下移動 showImg(https://segmentfault.com/img/bV6tGz?w=361&h=366); 解決方法:給子元素添加display:inline-block;或者用父...

    tomener 評論0 收藏0
  • 【前端Talkking】CSS系列——CSS深入理解float浮動

    摘要:包裹性所謂包裹性,其實是由包裹和自適應(yīng)兩部分組成。官方對屬性的解釋是元素盒子的邊不能和前面的浮動元素相鄰。清除高度塌陷的問題在上面的章節(jié)中,如果子元素設(shè)置浮動屬性,則父元素就會出現(xiàn)高度塌陷的問題。 float屬性是CSS中常用的一個屬性,在實際工作中使用的非常多,如果使用不當(dāng)就會出現(xiàn)意料之外的效果。雖然很多人說浮動會用就行、浮動過時了,但是對于優(yōu)秀的前端開發(fā)人員,需要有刨根問底的精神,...

    yankeys 評論0 收藏0

發(fā)表評論

0條評論

Jinkey

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<