摘要:原文鏈接說起其實(shí)有點(diǎn)像閉包在大多數(shù)人印象中的感覺,平時都用過,但在不了解定義的情況下大多數(shù)人卻又不知道這就是。這種行為只存在于兄弟元素在同一下這種情形。上文提到的可以看下大漠的這篇文章參考理解布局和分鐘理解原理
原文鏈接: Fyerl"s Blog
說起 BFC 其實(shí)有點(diǎn)像閉包在大多數(shù)人印象中的感覺,平時都用過,但在不了解定義的情況下大多數(shù)人卻又不知道這就是 BFC。之所以會想了解下什么是 BFC,是因?yàn)榍靶┤盏囊粋€簡單且常見的排版問題
HTML 代碼結(jié)構(gòu)如下
登錄名
label 的寬度是自適應(yīng)的,content 需填充滿此行剩余的區(qū)域。常規(guī)方法通過 flex 布局,很簡單
.form-item { display: flex; } .content { flex: 1; }
但是 flex 的兼容性還是不夠向下的,于是搜索了一下,得到了這么個方案
.label { float: left; } .content { overflow: hidden; }
label 給了個 float 可以理解,但 content 寫了一個 overflow: hidden 是什么意思?實(shí)則這里的 content 就形成了一個 BFC,所以還是先回到 BFC 這個概念上
什么是 BFCBFC 即(Block Format Context)塊級格式化范圍,是 CSS2.1 中用于規(guī)定塊級盒子的渲染布局方式如何觸發(fā)創(chuàng)建一個 BFC
root: 頁面的根元素
display: inline-block | flex | flow-root
position: absolute | fixed
overflow: hidden | auto | scroll
以上條件滿足任一便會觸發(fā)創(chuàng)建一個 BFC,同時也可以看出這些屬性的設(shè)置會產(chǎn)生一些額外的效果,比如僅僅是想觸發(fā) BFC,卻使用了 overflow: scroll 導(dǎo)致元素出現(xiàn)了滾動條,所以具體使用哪種方式觸發(fā) BFC,還是需要結(jié)合實(shí)際的業(yè)務(wù)場景
BFC 的特性以及使用場景 一、消除外邊距折疊如上,兩個 item 均存在上、下 margin,理想情況下,兩個 item 之間間距應(yīng)是 24px,但結(jié)果只有 12px,這便是外邊距折疊,兄弟元素外邊距不同時,取最大值。這種行為只存在于兄弟元素在同一 BFC 下這種情形。若想消除外邊距折疊,對上述代碼做一些改造,使兄弟元素存在于不同 BFC 之中即可
此時 item-wrapper 便形成了一個 BFC,解決了外邊距折疊問題。相信大家遇到這種情況習(xí)以為常地會加一層外層元素再給個 overflow: hidden,但為什么 overflow: hidden 就能消除折疊,其實(shí)背后是 BFC 的原理
二、清除浮動此時內(nèi)部 item 已脫離常規(guī)文檔流,父元素?zé)o法被子元素?fù)纹稹H粜枰冈匕∽釉?,一是通過常見的 clearfix 方案,二就是同過構(gòu)造父元素為 BFC,也就是通過大家熟悉的 overflow: hidden,這里涉及到的特性就是 BFC 能包裹住自己的后代浮動元素
三、防止被浮動元素覆蓋和圍繞浮動元素
回到最開始的布局問題上了,此時 label 浮動于 content 之上,如果 content 內(nèi)填充了其他元素,當(dāng) content 高度大于 label 一定高度時 content 內(nèi)元素會被 label 覆蓋或文本元素會圍繞著 label。如下圖,當(dāng)然不希望右側(cè)地址的第二行會從最左邊開始
此時一行代碼構(gòu)造 content 為 BFC,問題便解決了
總結(jié)
本文對 BFC 稍作梳理,望對代碼中那些莫名的 overflow: hidden 的理解有所幫助。上文提到的 overflow: flow-root 可以看下大漠的這篇文章《flow-root》
參考:理解 CSS 布局和 BFC
10分鐘理解 BFC 原理
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/113099.html
摘要:最常見的有簡稱和簡稱。的區(qū)域不會與重疊。也就是說只要父容器形成就可以,觸發(fā)方式見上清除浮動比較好的方法以上用,用更好的方法自適應(yīng)布局觸發(fā)自適應(yīng)屬性對比參考資料張鑫旭老師的博客 本文是從之前的csdn上的亂七八糟的筆記整理過來的 概念 Formatting context 是 W3C CSS2.1 規(guī)范中的一個概念。它是頁面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素將如何...
摘要:的概念以及作用的概念以及作用的定義的定義直譯為塊級格式化上下文。是的首字母縮寫,直譯過來是格式化上下文,它是頁面中的一塊渲染區(qū)域,有一套渲染規(guī)則,決定了其子元素如何布局,以及和其他元素之間的關(guān)系和作用。BFC的概念以及作用 BFC的定義: (Block formatting context)直譯為塊級格式化上下文。它是一個獨(dú)立的渲染區(qū)域,只有Block-level box參與, 它規(guī)定了內(nèi)...
摘要:它是頁面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素將如何定位,以及和其他元素的關(guān)系和相互作用。一個的范圍包含創(chuàng)建該上下文元素的所有子元素,但不包括創(chuàng)建了新的子元素的內(nèi)部元素。 走在前端的大道上 本篇將自己讀過的相關(guān) 盒模型BFC 文章中,對自己有啟發(fā)的章節(jié)片段總結(jié)在這(會對原文進(jìn)行刪改),會不斷豐富提煉總結(jié)更新。 一.常見定位方案 在講 BFC 之前,我們先來了解一下常見的...
摘要:歡迎來我的個人站點(diǎn)性能優(yōu)化其他優(yōu)化瀏覽器關(guān)鍵渲染路徑開啟性能優(yōu)化之旅高性能滾動及頁面渲染優(yōu)化理論寫法對壓縮率的影響唯快不破應(yīng)用的個優(yōu)化步驟進(jìn)階鵝廠大神用直出實(shí)現(xiàn)網(wǎng)頁瞬開緩存網(wǎng)頁性能管理詳解寫給后端程序員的緩存原理介紹年底補(bǔ)課緩存機(jī)制優(yōu)化動 歡迎來我的個人站點(diǎn) 性能優(yōu)化 其他 優(yōu)化瀏覽器關(guān)鍵渲染路徑 - 開啟性能優(yōu)化之旅 高性能滾動 scroll 及頁面渲染優(yōu)化 理論 | HTML寫法...
閱讀 4713·2021-09-09 09:33
閱讀 2440·2019-08-29 17:15
閱讀 2428·2019-08-29 16:21
閱讀 1038·2019-08-29 15:06
閱讀 2681·2019-08-29 13:25
閱讀 633·2019-08-29 11:32
閱讀 3304·2019-08-26 11:55
閱讀 2648·2019-08-23 18:24