CSS中的各種格式化上下文-FC(BFC歉铝、IFC盈简、GFC、FFC)

什么是FC太示?

FC是Formatting Context的縮寫柠贤,中文名:格式化上下文。是 W3C在CSS2.1 規(guī)范中的一個概念类缤。

FC是指頁面中一篇渲染區(qū)域臼勉,渲染區(qū)域內(nèi)使用的格式化上下文的渲染規(guī)則,決定了該區(qū)域以及其子元素如何定位餐弱。當然宴霸,使用同的渲染規(guī)則,也會對其他元素的起到相互關(guān)系的作用岸裙。

主要有哪些FC猖败?

主要的格式化上下文渲染規(guī)則一共有4種,分別是BFC(塊級格式化上下文)降允、IFC(行內(nèi)格式化上下文)恩闻、GFC(網(wǎng)格布局格式化上下文)、FFC(自適應(yīng)格式化上下文)剧董。
4種格式化上下文渲染規(guī)則幢尚,也是體現(xiàn)了CSS中不同的渲染規(guī)則。

BFC

什么是BFC

Block Formatting Context翅楼,塊級格式化上下文尉剩,一個獨立的塊級渲染區(qū)域,該區(qū)域擁有一套渲染規(guī)則來約束塊級盒子的布局毅臊,且與區(qū)域外部無關(guān)理茎。

BFC的約束規(guī)則

內(nèi)部的BOX會在垂直方向上一個接一個的放置;
垂直方向上的距離由margin決定管嬉。(完整的說法是:屬于同一個BFC的倆個相鄰的BOX的margin會發(fā)生重疊皂林,與方向無關(guān)。)
每個元素的左外邊距與包含塊的左邊界相接觸(從左到右)蚯撩,即使浮動元素也是如此础倍。(這說明BFC中的子元素不會超出它的包含塊,而position為absolute的元素可以超出它的包含塊邊界)胎挎;
BFC的區(qū)域不會與float的元素區(qū)域重疊沟启;
計算BFC的高度時忆家,浮動子元素也參與計算;
BFC就是頁面上的一個隔離的獨立容器德迹,容器里面的子元素不會影響到外面的元素芽卿,反之亦然;

BFC的應(yīng)用

防止margin發(fā)生重疊
防止發(fā)生因浮動導致的高度塌陷

怎么生成BFC

float的值不為none浦辨;
overflow的值不為visible蹬竖;
display的值為inline-block沼沈、table-cell流酬、table-caption;
position的值為absolute或fixed列另;
display:table也認為可以生成BFC芽腾?其實是在于Table會默認生成一個匿名的table-cell,正是這個匿名的table-cell生成了BFC页衙。

IFC

什么是IFC

IFC(Inline Formatting Contexts)直譯為"行內(nèi)格式化上下文"摊滔,IFC的line box(線框)高度由其包含行內(nèi)元素中最高的實際高度計算而來(不受到豎直方向的padding/margin影響)

IFC有的特性

IFC中的line box一般左右都貼緊整個IFC,但是會因為float元素而擾亂店乐。float元素會位于IFC與與line box之間艰躺,使得line box寬度縮短。

IFC中時不可能有塊級元素的眨八,當插入塊級元素時(如p中插入div)會產(chǎn)生兩個匿名塊與div分隔開腺兴,即產(chǎn)生兩個IFC,每個IFC對外表現(xiàn)為塊級元素廉侧,與div垂直排列页响。

IFC的應(yīng)用

水平居中:當一個塊要在環(huán)境中水平居中時,設(shè)置其為inline-block則會在外層產(chǎn)生IFC段誊,通過text-align則可以使其水平居中闰蚕。

垂直居中:創(chuàng)建一個IFC,用其中一個元素撐開父元素的高度连舍,然后設(shè)置其vertical-align:middle没陡,其他行內(nèi)元素則可以在此父元素下垂直居中。

GFC

什么是GFC

GFC(GridLayout Formatting Contexts)直譯為"網(wǎng)格布局格式化上下文"索赏,當為一個元素設(shè)置display值為grid的時候盼玄,此元素將會獲得一個獨立的渲染區(qū)域,我們可以通過在網(wǎng)格容器(grid container)上定義網(wǎng)格定義行(grid definition rows)和網(wǎng)格定義列(grid definition columns)屬性各在網(wǎng)格項目(grid item)上定義網(wǎng)格行(grid row)和網(wǎng)格列(grid columns)為每一個網(wǎng)格項目(grid item)定義位置和空間参滴。

GFC有的特性

GFC將改變傳統(tǒng)的布局模式强岸,他將讓布局從一維布局變成了二維布局。簡單的說砾赔,有了GFC之后蝌箍,布局不再局限于單個維度了青灼。這個時候你要實現(xiàn)類似九宮格,拼圖之類的布局效果顯得格外的容易妓盲。

FFC

什么是FFC

FFC(Flex Formatting Contexts)直譯為"自適應(yīng)格式化上下文"杂拨,display值為flex或者inline-flex的元素將會生成自適應(yīng)容器(flex container)。

FFC有的特性

Flex Box 由伸縮容器和伸縮項目組成悯衬。通過設(shè)置元素的 display 屬性為 flex 或 inline-flex 可以得到一個伸縮容器弹沽。設(shè)置為 flex 的容器被渲染為一個塊級元素,而設(shè)置為 inline-flex 的容器則渲染為一個行內(nèi)元素筋粗。

伸縮容器中的每一個子元素都是一個伸縮項目策橘。伸縮項目可以是任意數(shù)量的。伸縮容器外和伸縮項目內(nèi)的一切元素都不受影響娜亿。簡單地說丽已,F(xiàn)lexbox 定義了伸縮容器內(nèi)伸縮項目該如何布局。

FFC與BFC的區(qū)別

FFC與BFC有點兒類似买决,但仍有以下幾點區(qū)別:

Flexbox 不支持 ::first-line 和 ::first-letter 這兩種偽元素

vertical-align 對 Flexbox 中的子元素 是沒有效果的

float 和 clear 屬性對 Flexbox 中的子元素是沒有效果的沛婴,也不會使子元素脫離文檔流(但是對Flexbox 是有效果的!)

多欄布局(column-*) 在 Flexbox 中也是失效的督赤,就是說我們不能使用多欄布局在Flexbox 排列其下的子元素

Flexbox 下的子元素不會繼承父級容器的寬

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嘁灯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子躲舌,更是在濱河造成了極大的恐慌丑婿,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孽糖,死亡現(xiàn)場離奇詭異枯冈,居然都是意外死亡,警方通過查閱死者的電腦和手機办悟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門尘奏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人病蛉,你說我怎么就攤上這事炫加。” “怎么了铺然?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵俗孝,是天一觀的道長。 經(jīng)常有香客問我魄健,道長赋铝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任沽瘦,我火速辦了婚禮革骨,結(jié)果婚禮上农尖,老公的妹妹穿的比我還像新娘。我一直安慰自己良哲,他們只是感情好盛卡,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筑凫,像睡著了一般滑沧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上巍实,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天滓技,我揣著相機與錄音,去河邊找鬼蔫浆。 笑死殖属,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的瓦盛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼外潜,長吁一口氣:“原來是場噩夢啊……” “哼原环!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起处窥,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嘱吗,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后滔驾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谒麦,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年哆致,在試婚紗的時候發(fā)現(xiàn)自己被綠了绕德。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡摊阀,死狀恐怖耻蛇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胞此,我是刑警寧澤臣咖,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站漱牵,受9級特大地震影響夺蛇,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜酣胀,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一刁赦、第九天 我趴在偏房一處隱蔽的房頂上張望愿卸。 院中可真熱鬧,春花似錦截型、人聲如沸趴荸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽发钝。三九已至,卻和暖如春波闹,著一層夾襖步出監(jiān)牢的瞬間酝豪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工精堕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留孵淘,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓歹篓,卻偏偏與公主長得像瘫证,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子庄撮,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一背捌,可視化格式模型 盒子模型是CSS中元素產(chǎn)生的box的自身構(gòu)成,就是我們平常所認知的包含邊距洞斯、邊框毡庆、內(nèi)容的矩形區(qū)...
    250的夢想閱讀 367評論 0 3
  • 在前面兩篇文章分別介紹了BFC么抗、IFC,這兩個都是CSS2里的規(guī)范和概念亚铁,這篇文章接續(xù)上兩篇文章來說說CSS3規(guī)范...
    250的夢想閱讀 809評論 0 1
  • (注1:如果有問題歡迎留言探討蝇刀,一起學習!轉(zhuǎn)載請注明出處刀闷,喜歡可以點個贊哦P鼙谩)(注2:更多內(nèi)容請查看我的目錄。) ...
    love丁酥酥閱讀 652評論 0 3
  • 刷面試題的時候甸昏,看到BFC 完全懵逼了顽分,第一次接觸這個概念。用了css 也有半年了施蜜,美化了那么多頁面卒蘸,搜索了一下,...
    大龍BBG閱讀 180評論 0 1
  • 原文網(wǎng)址:http://www.cnblogs.com/dingyufenglian/p/4845477.html...
    chen1zee閱讀 9,107評論 0 9