CSS格式化上下文之GFC二驰、FFC

????????在前面兩篇文章分別介紹了BFC、IFC秉沼,這兩個都是CSS2里的規(guī)范和概念桶雀,這篇文章接續(xù)上兩篇文章來說說CSS3規(guī)范里的GFC、FFC唬复,至此這一序列的總結(jié)文章也就結(jié)束了矗积。

1,CSS3

????????介紹GFC敞咧,F(xiàn)FC棘捣,就繞不開CSS3,說起CSS3妄均,我們就得從頭來回顧下CSS的發(fā)展歷史和CSS3的誕生柱锹。

誕生

????????1990年哪自,Web先驅(qū)Time Berners--Lee和Robert Calliau一起發(fā)明了Web,并在1994年Web真正走出了實驗室禁熏,從Web(HTML)被發(fā)明開始壤巷,網(wǎng)頁樣式一直以各種形式存在, 但是網(wǎng)頁的樣式此時掌握在瀏覽器開發(fā)商手里瞧毙,能控制的顯示也很少胧华,為了滿足網(wǎng)頁設(shè)計者的不斷提升的要求,網(wǎng)頁增加了越來越多的顯示功能宙彪,變得越來越復(fù)雜矩动,頁面越來越臃腫,于是CSS誕生了释漆,其實當(dāng)時業(yè)界也提出了一些統(tǒng)一樣式語言的建議悲没,但是CSS是第一個具有“層疊”意義(繼承、覆蓋男图、設(shè)計靈活)的樣式表語言示姿,這門語言是在1994年由哈坤·利提出來的建議,并在伯特·波斯當(dāng)時在設(shè)計的Web瀏覽器Argo上得到了應(yīng)用逊笆,最終在1996年栈戳,W3C正式推出了CSS第一個規(guī)范,這就是CSS1难裆。CSS1推出之前我們可以稱之為CSS0時代(非規(guī)范)子檀。

css1

????CSS1提供有關(guān)字體、顏色乃戈、位置和文本屬性的的基本信息褂痰,該版本得到了目前可解析XML和HTML的瀏覽器的廣泛支持,應(yīng)用樣式到標(biāo)記系統(tǒng)的方式(可用樣式屬性和聲明方式)主要有:

選擇器:要使用CSS對HTML頁面中的元素實現(xiàn)一對一偏化、一對多脐恩、多對一的樣式控制,就必須使用到選擇器侦讨,選擇器大致可分為Id選擇器驶冒、類選擇器、上下文選擇器(通過元素位置的上下文關(guān)系來定義樣式韵卤,應(yīng)用或者避免某項規(guī)則骗污,CSS2中被成為派生選擇器 ),用來定義希望應(yīng)用樣式的HMTL元素或標(biāo)簽沈条。

屬性:屬性包含屬性名和值需忿,中間已冒號隔開,屬性通常包含在規(guī)則塊里({}包裹),按照作用屬性大致可分為字體屋厘、顏色涕烧、位置、大小汗洒、邊距议纯、邊框等,主要是定義網(wǎng)頁以及網(wǎng)頁元素的展示溢谤。

偽類與偽元素:偽類和偽元素都是用于向某些選擇器設(shè)置的特殊效果瞻凤,以冒號區(qū)隔比如a:acvtive{}

css2

CSS2是對CSS1的補充,屬于包含關(guān)系世杀,CSS2拓展了選擇器阀参,充實了樣式單的功能,推薦的是內(nèi)容和表現(xiàn)分離的方式來應(yīng)用樣式瞻坝,

css3

css3是目前最新的一版蛛壳,相對于css2選擇器更加豐富、樣式屬性也更加豐富湿镀,增加增強了一些顯示效果(如)動畫炕吸,以前一些需要在js或者用圖片實現(xiàn)的效果,現(xiàn)在可以考慮用Css來實現(xiàn)了勉痴。還有一個比較重要的一點,之前CSS中一些存在兼容的問題树肃,在CSS3中得到了標(biāo)準(zhǔn)的支持蒸矛。

2,F(xiàn)FC(Flexible Formatting Context)

????????CSS3引入了一種新的布局模型——flex布局(之前有文章介紹過)胸嘴。flex是flexible box的縮寫雏掠,一般稱之為彈性盒模型。和CSS3其他屬性不一樣劣像,flexbox并不是一個屬性乡话,而是一個模塊,包括多個CSS3屬性耳奕。flex布局提供一種更加有效的方式來進行容器內(nèi)的項目布局绑青,以適應(yīng)各種類型的顯示設(shè)備和各種尺寸的屏幕,使用Flex box布局實際上就是聲明創(chuàng)建了FFC(自適應(yīng)格式上下文)屋群,具體自定義格式上下文有什么特性闸婴,也可以參考我之前寫的文章《盒模型和布局》。

????????在布局的時候芍躏,較早時經(jīng)常會使用浮動邪乍,使用浮動的元素會脫離文檔流,那文檔流到底是什么東西呢? "流"是render tree(渲染樹)在布局時的一個概念庇楞。

css2.1 中有相關(guān)的定義:

從上我們知道渲染數(shù)布局時依據(jù)的位置規(guī)則(當(dāng)然還有大小榜配,所占的空間),也就是說我們所說的流實際上規(guī)定了元素怎么排放以及相互作用(之前講的渲染規(guī)則)吕晌。在CSS中主要有三種流: normal flow(普通流芥牌,我們經(jīng)常將的脫離,脫離的就是它)聂使、floats壁拉、Absolute Posioning(position不為static、relative)柏靶。FFC屬于normal flow里的一個上下文概念弃理,是普通流的一種,而浮動流和定位流以及CSS其他屬性對FFC是有影響的屎蜓,主要表現(xiàn)在以下幾點:

  [1] float痘昌、clear和vertical-align屬性在伸縮項目上沒有效果

  [2] 伸縮容器的margin與其內(nèi)容的margin不會重疊

  [3] text-align屬性在伸縮容器上沒有效果,因為其只可應(yīng)用于塊級block容器

  [4] 另外炬转,columns屬性伸縮容器上沒有效果

備注:

脫離文檔流辆苔,也就是將元素從普通的布局排版中拿走,其他盒子在定位的時候扼劈,會當(dāng)做脫離文檔流的元素不存在而進行定位驻啤。需要注意的是,使用float脫離文檔流時荐吵,其他盒子會無視這個元素骑冗,但其他盒子內(nèi)的文本依然會為這個元素讓出位置,環(huán)繞在周圍先煎。而對于使用absolute positioning脫離文檔流的元素贼涩,其他盒子與其他盒子內(nèi)的文本都會無視它。

3薯蝎,GFC(GridLayout Formatting Context)

????????也是在《盒模型和布局》中我們用table來實現(xiàn)了一個傳統(tǒng)的三欄布局遥倦,這實際上是一種二維布局方式,CSS3中增加的GFC也是實現(xiàn)二維布局的方式占锯,而且比table提供了更好的細(xì)節(jié)和控制袒哥。

????????GFC(GridLayout Formatting Contexts)直譯為"網(wǎng)格布局格式化上下文",當(dā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的應(yīng)用范式和flex有點像疑俭,以后我們專門介紹下此種布局方式(bootstrap css類庫 里面模擬實現(xiàn)了網(wǎng)格布局)粮呢,這里我們不展開敘述,我們只需知道和FFC一樣,GFC也定義了特殊的渲染規(guī)則啄寡,也屬于普通流的一種豪硅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市挺物,隨后出現(xiàn)的幾起案子懒浮,更是在濱河造成了極大的恐慌,老刑警劉巖识藤,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件砚著,死亡現(xiàn)場離奇詭異,居然都是意外死亡痴昧,警方通過查閱死者的電腦和手機稽穆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赶撰,“玉大人舌镶,你說我怎么就攤上這事『滥龋” “怎么了餐胀?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瘤载。 經(jīng)常有香客問我否灾,道長,這世上最難降的妖魔是什么惕虑? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任坟冲,我火速辦了婚禮,結(jié)果婚禮上溃蔫,老公的妹妹穿的比我還像新娘。我一直安慰自己琳猫,他們只是感情好伟叛,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脐嫂,像睡著了一般统刮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上账千,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天侥蒙,我揣著相機與錄音,去河邊找鬼匀奏。 笑死鞭衩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播论衍,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼瑞佩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坯台?” 一聲冷哼從身側(cè)響起炬丸,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜒蕾,沒想到半個月后稠炬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡咪啡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年首启,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑟匆。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡闽坡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出愁溜,到底是詐尸還是另有隱情疾嗅,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布冕象,位于F島的核電站代承,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏渐扮。R本人自食惡果不足惜论悴,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望墓律。 院中可真熱鬧膀估,春花似錦、人聲如沸耻讽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽针肥。三九已至饼记,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間慰枕,已是汗流浹背具则。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留具帮,地道東北人博肋。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓低斋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親束昵。 傳聞我的和親對象是個殘疾皇子拔稳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,759評論 1 92
  • 1. 前言 前端圈有個“骨鲁”:在面試時巴比,問個css的position屬性能刷掉一半人,其中不乏工作四五年的同學(xué)礁遵。在...
    YjWorld閱讀 4,468評論 5 15
  • 宜昌張勇閱讀 314評論 2 2
  • 夜悄悄的來 風(fēng)靜靜的過 三月的煙花已越過揚州 而江南的小鎮(zhèn) 煙雨繚然 那嬌羞的荷花 好似那溫柔女子 夜雨灑香 人未...
    一個有夢想的逗比閱讀 370評論 0 0
  • 文/江楓 "臘月"出生在臘月轻绞,叫他名字應(yīng)該叫"臘月兒"。"臘月兒"生于五十年代佣耐,在重男輕女的農(nóng)村政勃,他的降生著實給他...
    一江楓閱讀 1,120評論 2 1