摘要:相關(guān)定義是規(guī)定中的一個(gè)概念。最常見(jiàn)的有簡(jiǎn)稱(chēng)和簡(jiǎn)稱(chēng)。中只有和,中還增加了和。布局規(guī)則內(nèi)部的會(huì)在垂直方向,一個(gè)接一個(gè)地放置垂直方向地距離由決定。計(jì)算的高度時(shí),浮動(dòng)元素頁(yè)參與計(jì)算。我們的做法是包一層標(biāo)簽,并轉(zhuǎn)化成。
1、相關(guān)定義 1.1 Formatting context
Formatting context是W3C CSS2.1規(guī)定中的一個(gè)概念。它是頁(yè)面中的一塊渲染區(qū)域,并且有一套渲染規(guī)則,它決定了其子元素如何定位,以及和其他元素的關(guān)系和相互作用。最常見(jiàn)的Formatting context有Block formatting context(簡(jiǎn)稱(chēng)BFC)和Inline formatting context(簡(jiǎn)稱(chēng)IFC)。
css2.1中只有BFC和IFC,css3中還增加了GFC和FFC。
BFC(Block formatting context)直譯為“塊級(jí)格式化上下文”。它是獨(dú)立的渲染區(qū)域,只有Block-level box參與,它規(guī)定了內(nèi)部的Block-level Box如何布局,并且與這個(gè)區(qū)域外部毫不相干。
1.3 BFC布局規(guī)則:內(nèi)部的Box會(huì)在垂直方向,一個(gè)接一個(gè)地放置;
Box垂直方向地距離由margin決定。屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會(huì)發(fā)生重疊
每個(gè)元素的margin box的左邊,與包含塊border box的左邊相接觸(對(duì)于從左往右的格式化,否則相反)。即便存在浮動(dòng)也是如此。
BFC的區(qū)域不會(huì)與float box重疊。
BFC就是頁(yè)面的一個(gè)隔離的獨(dú)立容器,容器里面的子元素不會(huì)影響到外面的元素。反之也如此。
計(jì)算BFC的高度時(shí),浮動(dòng)元素頁(yè)參與計(jì)算。
2、作用 2.1 可生成BFC的元素根元素html;
float屬性不為none;
position為absolute或fixed;
display為inline-block, table-cell,table-caption,flex, inline-flex;
overflow不為visible;
2.2 場(chǎng)景一:對(duì)于兩欄或三欄浮動(dòng)自適應(yīng)布局,包含塊邊接觸問(wèn)題。我是左邊區(qū)域塊 我是右邊區(qū)域塊 我是中間區(qū)域塊
中間自適應(yīng)欄邊界會(huì)延展左右浮動(dòng)區(qū)域
此時(shí)需要把中間欄變成BFC
.left-center-right.float .center { background-color: rgb(13, 218, 233); height: 200px; overflow: hidden; }2.3 場(chǎng)景二:子級(jí)元素有浮動(dòng),父級(jí)元素塌陷問(wèn)題
我是左邊區(qū)域塊 我是右邊區(qū)域塊
此時(shí)需要將父級(jí)元素變成BFC
.all-children-float { position: absolute; }2.3 場(chǎng)景三:垂直方向margin出現(xiàn)重合
我是區(qū)域塊1 我是區(qū)域塊2
Box垂直方向的距離margin決定,屬于同一個(gè)BFC的兩個(gè)相鄰Box的margin會(huì)發(fā)生重疊。
我們的做法是包一層標(biāo)簽,并轉(zhuǎn)化成BFC。
.wrapper1 { overflow: hidden; }我是區(qū)域塊1 我是區(qū)域塊2
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/115659.html
摘要:一直都知道可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有這么個(gè)東西,寫(xiě)這篇文章一是為了加深記憶,二是為了加深理解。解決方案如下給添加一個(gè)屬性便會(huì)避開(kāi)計(jì)算內(nèi)層元素的高度。但如果高度有具體的值時(shí),高度超過(guò)時(shí)還是會(huì)被裁剪。 一直都知道overflow可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有BFC這么個(gè)東西,寫(xiě)這篇文章一是為了加深記憶,二是為了加深理解。 ...
摘要:一直都知道可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有這么個(gè)東西,寫(xiě)這篇文章一是為了加深記憶,二是為了加深理解。解決方案如下給添加一個(gè)屬性便會(huì)避開(kāi)計(jì)算內(nèi)層元素的高度。但如果高度有具體的值時(shí),高度超過(guò)時(shí)還是會(huì)被裁剪。 一直都知道overflow可以清除浮動(dòng),但是卻不知道這背后的原理。查了眾多資料后才發(fā)現(xiàn)有BFC這么個(gè)東西,寫(xiě)這篇文章一是為了加深記憶,二是為了加深理解。 ...
摘要:合并的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。那我們?cè)趺崔k,回到主題清除浮動(dòng)。你可能忘了偽元素是行內(nèi)元素,只有塊元素才能清除浮動(dòng)。所以我們最好后,主動(dòng)清除一下浮動(dòng),避免以后遇到很奇怪的問(wèn)題。 這是我的第一篇掘金文章,希望大家不要嫌棄。我還是一名在校大學(xué)生,就是想把自己所學(xué)到的知識(shí)寫(xiě)出來(lái),加深自己的印象,記錄自己成長(zhǎng)的過(guò)程,這篇文章主要是介紹HTML 、 CSS 的一些小知...
摘要:合并的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。那我們?cè)趺崔k,回到主題清除浮動(dòng)。你可能忘了偽元素是行內(nèi)元素,只有塊元素才能清除浮動(dòng)。所以我們最好后,主動(dòng)清除一下浮動(dòng),避免以后遇到很奇怪的問(wèn)題。 這是我的第一篇掘金文章,希望大家不要嫌棄。我還是一名在校大學(xué)生,就是想把自己所學(xué)到的知識(shí)寫(xiě)出來(lái),加深自己的印象,記錄自己成長(zhǎng)的過(guò)程,這篇文章主要是介紹HTML 、 CSS 的一些小知...
摘要:規(guī)范文檔,行內(nèi)非替換元素背景高度由字體和字體大小決定的,默認(rèn)處理和行高沒(méi)關(guān)系,不過(guò)這只是瀏覽器現(xiàn)在的處理方法摘自參考。不過(guò)實(shí)際上這個(gè)對(duì)樣式的影響不是很大或者設(shè)置。的值除了也是可以為數(shù)值的。的區(qū)域不會(huì)與重疊。 摘要 剛看了一個(gè)關(guān)于前端面試題的帖子,有些css題雖然能答出來(lái),但出于學(xué)習(xí)的目的與好奇心,覺(jué)得有必要加深一下對(duì)功能實(shí)現(xiàn)原理的了解。整理出一份文檔,共勉。 正文 行內(nèi)元素的高 ...
閱讀 2426·2021-09-22 16:01
閱讀 3188·2021-09-22 15:41
閱讀 1204·2021-08-30 09:48
閱讀 520·2019-08-30 15:52
閱讀 3351·2019-08-30 13:57
閱讀 1744·2019-08-30 13:55
閱讀 3702·2019-08-30 11:25
閱讀 791·2019-08-29 17:25