Flexbox彈性盒模型詳解

導(dǎo)讀

  • Flexbox的來歷
  • 基礎(chǔ)概念(重點)
  • 彈性容器屬性(重點)
  • 彈性項目屬性(重點)
  • 應(yīng)用場景
彈性盒模型

Flexbox的來歷

2017年10月杯瞻,W3C推薦使用Flexbox模塊寫布局甜橱。在此之前,我們的布局模型有三種:流動布局租漂、浮動布局、定位布局。
以上三種布局中诈皿,父元素對子元素幾乎沒有什么掌控力栗菜,父子元素之間的關(guān)系不夠緊密欠雌。隨著移動互聯(lián)網(wǎng)時代的到來,傳統(tǒng)布局在多種顯示設(shè)備和尺寸上顯得不夠靈活疙筹,我們需要一種更高效的布局方式富俄,來處理元素的布局以及元素之間的空間的分配《兀“彈性盒模型”應(yīng)用而生霍比。

核心思想
彈性盒模型的核心思想是賦予父元素一種超能力,讓父元素對子元素擁有掌控力:

  • 控制子元素的尺寸
  • 控制子元素的位置
  • 控制子元素的排序
  • 控制子元素之間的空白

基礎(chǔ)概念

flexbox.png

彈性盒模型 - 彈性盒模型它指是一套css屬性規(guī)則暴备,而不是一個css屬性悠瞬。具體來講,分為兩組屬性: 彈性容器屬性 和 彈性項目屬性
彈性容器 - 被設(shè)置了display:flex的元素成為彈性容器涯捻。彈性容器對子元素擁有掌控力浅妆。
彈性項目 - 彈性容器內(nèi)的子元素被稱為彈性項目。彈性項目受到父元素的控制障癌。
主軸 - 彈性項目的主要排列方向凌外。
垂直軸 - 垂直于主軸的軸, 垂直軸是彈性項目的次要排列方向。
主軸起點 - 彈性項目沿主軸排列的起始點涛浙。
主軸終點 - 彈性項目沿主軸排列的終點康辑。
垂直軸起點 - 彈性項目沿垂直軸排列的起始點。
垂直軸終點 - 彈性項目沿垂直軸排列的終點轿亮。

彈性盒模型屬性

父元素屬性

1. display

display:flex 創(chuàng)建彈性容器

定義
Display屬性用于定義彈性容器晾捏。

語法

.container{
  display:flex | inline-flex;
}
  • flex : 定義塊級彈性容器
  • inline-flex: 定義行內(nèi)彈性容器

2. flex-direction

flex-direction 設(shè)置主軸方向

定義
flex-direction用于創(chuàng)建主軸,彈性項目主要沿主軸方向排列哀托。

語法

.container{
  flex-direction: row | row-reverse | column | column-reverse
}
  • row: 默認值惦辛。把主軸設(shè)為水平軸,彈性項目從左向右水平排列。
  • row-reverse:把主軸設(shè)為水平軸仓手。彈性項目從右向左水平排列胖齐。
  • column:把主軸設(shè)為縱軸玻淑。彈性項目從上向下垂直排列。
  • column-reverse:把主軸設(shè)為縱軸呀伙,彈性項目從下向上垂直排列补履。

3. flex-wrap

flex-wrap 設(shè)置彈性項目換行方式

定義
flex-wrap用于定義彈性項目是否換行及換行方式。

語法

.container{
  flex-wrap: nowrap | wrap | wrap-reverse;
}
  • nowrap: 默認值剿另。不換行箫锤。所有彈性項目顯示在一行內(nèi)。
  • wrap: 換行雨女。彈性項目向垂直軸終點方向換行谚攒。
  • wrap-reverse: 換行。彈性項目向垂直軸起點方向換行氛堕。

4. justify-content

justify-content 定義主軸排列方式

定義
justify-content用于定義彈性項目沿主軸的排列方式馏臭。

語法

.container{
  justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly
}
  • flex-start: 默認值。彈性項目向主軸起點堆積讼稚。
  • flex-end:彈性項目向主軸終點堆積括儒。
  • center : 彈性項目向主軸中心堆積。
  • space-between:空白均勻分布在任意兩個彈性項目之間锐想。(第一個彈性項目在主軸起點帮寻,最后一個彈性項目在主軸終點)
  • space-around:空白均勻分布在每個彈性項目兩側(cè)。
  • space-evenly: 空白平均分布在任意兩個彈性項目之間赠摇。(包括首尾彈性項目)

5. align-items

align-items 定義垂直軸的行內(nèi)排列方式

定義
align-items 用于定義彈性項目沿垂直軸的行內(nèi)排列方式规婆。

語法

.container{
  align-items: flex-start | flex-end | center | stretch | baseline
}
  • stretch : 默認值,拉伸彈性項目的高度蝉稳,填充彈性容器的高。
  • flex-start: 讓彈性項目在當(dāng)前行內(nèi)向垂直軸起點堆積掘鄙。
  • flex-end: 讓彈性項目在當(dāng)前行內(nèi)向垂直軸終點堆積耘戚。
  • center:讓彈性項目在當(dāng)前行內(nèi)向垂直軸中點堆積。
  • baseline: 讓彈性項目在當(dāng)前行內(nèi)向?qū)R到基線操漠。

6. align-content

align-content 定義垂直軸的排列方式

定義
align-content用于定義彈性項目沿垂直軸的排列方式收津。

語法

.container{
  align-content: normal | flex-start | flex-end | center | stretch | space-between | space-around |space-evenly;
}

  • normal: 彈性項目被堆積在它們的默認位置浊伙,就好像沒有設(shè)置 align-content 值一樣撞秋。
  • flex-start: 默認值。彈性項目向垂直軸起點堆積嚣鄙。
  • flex-end:彈性項目向垂直軸終點堆積吻贿。
  • center : 彈性項目向垂直軸中心堆積。
  • space-between:空白均勻分布在任意兩個彈性項目之間哑子。(第一個彈性項目在垂直軸起點舅列,最后一個彈性項目在垂直軸終點)
  • space-around:空白均勻分布在每個彈性項目兩側(cè)肌割。
  • space-evenly: 空白平均分布在任意兩個彈性項目之間。(包括首尾彈性項目)

注意:該屬性只對多行彈性容器生效帐要,即flex-wrap 設(shè)置為 wrap 或 wrap-reverse把敞。單行彈性容器無效,即 flex-wrap 設(shè)置為no-wrap榨惠。

7. gap屬性

gap 設(shè)置彈性項目之間的空白

定義
gap屬性用控制彈性項目之間的空白大小奋早。

語法

.container{
  gap:  10px;/*單行:控制水平間距*/
  gap:  10px赠橙;/*單行:控制水平和垂直間距*/
  gap: 10px 20px; /* 水平間距 垂直間距*/
}

注意:1. 該屬性僅控制非邊緣彈性項目耽装。(不控制第一個和最后一個彈性項目) 2.只有當(dāng)該空白變得足夠小時,間距才會生效简烤。

子元素屬性

1. order屬性

2. flex-grow屬性

3. flex-shrink屬性

4. flex-basis屬性

5. align-item屬性

6. flex屬性

簡寫形式 完整形式
默認值 flex : 0 1 auto;
flex : 1 flex : 1 1 0%;
flex: auto flex : 1 1 auto;
flex : none flex: 0 0 auto;
flex : 0% flex : 1 1 0%;
flex : 2 3 flex : 2 3 0%;
flex : 2 3px flex : 2 1 3px;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剂邮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子横侦,更是在濱河造成了極大的恐慌挥萌,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枉侧,死亡現(xiàn)場離奇詭異引瀑,居然都是意外死亡,警方通過查閱死者的電腦和手機榨馁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門憨栽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人翼虫,你說我怎么就攤上這事屑柔。” “怎么了珍剑?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵掸宛,是天一觀的道長。 經(jīng)常有香客問我招拙,道長唧瘾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任别凤,我火速辦了婚禮饰序,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘规哪。我一直安慰自己求豫,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著注祖,像睡著了一般猾蒂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上是晨,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天肚菠,我揣著相機與錄音,去河邊找鬼罩缴。 笑死蚊逢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的箫章。 我是一名探鬼主播烙荷,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼檬寂!你這毒婦竟也來了终抽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤桶至,失蹤者是張志新(化名)和其女友劉穎昼伴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镣屹,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡圃郊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了女蜈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片持舆。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伪窖,靈堂內(nèi)的尸體忽然破棺而出逸寓,到底是詐尸還是另有隱情,我是刑警寧澤覆山,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布竹伸,位于F島的核電站,受9級特大地震影響汹买,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜聊倔,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一晦毙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耙蔑,春花似錦见妒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盐股。三九已至,卻和暖如春耻卡,著一層夾襖步出監(jiān)牢的瞬間疯汁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工卵酪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幌蚊,地道東北人。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓溃卡,卻偏偏與公主長得像溢豆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瘸羡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

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