Flex的使用方式

鑒于微信小程序和阿里WEEX在開發中都已經使用了Flex,本文介紹一下常用屬性.


一、概念及使用方式

Flex 是 Flexible Box 的縮寫,意為"彈性布局",用來為盒狀模型提供最大的靈活性。

  .box {
    display: flex;
  }

二、屬性


以下6個屬性

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

2.1 flex-direction 方向


決定主軸的方向(即項目的排列方向)

.box {
    flex-direction: row | row-reverse | column | column-reverse;
}
  • row (默認值):主軸為水平方向,起點在左端。
  • row-reverse :主軸為水平方向,起點在右端。
  • column :主軸為垂直方向,起點在上沿
  • column-reverse:主軸為垂直方向,起點在下沿。

2.2 flex-wrap 換行


默認情況下,項目都排在一條線(又稱"軸線")上。flex-wrap屬性定義,如果一條軸線排不下,如何換行。

.box{
    flex-wrap: nowrap | wrap | wrap-reverse;
}
image

2.3 flex-flow 方向和換行的簡寫


flex-direction屬性和flex-wrap屬性的簡寫形式,默認值為row nowrap

.box {
  flex-flow: <flex-direction> <flex-wrap>;
}

2.4 justify-content


主軸上的對齊方式

.box {
    justify-content: flex-start | flex-end | center | space-between | space-around;
  }
  • flex-start(默認值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,中間間距相等。要注意特殊情況,當剩余空間為負數或者只有一項時,效果等同于flex-start
  • space-around:表示間距相等,中間間距是兩端間距的2倍。要注意特殊情況,當剩余空間為負數或者只有一個項時,效果等同于center

2.5 align-items


側軸上的對齊方式

  .box {
    align-items: flex-start | flex-end | center | baseline | stretch;
  }
  • stretch(默認值):如果項目未設置高度或設為auto,將占滿整個容器的高度。


  • flex-start:側軸的起點對齊。

  • flex-end:側軸的終點對齊。

  • center:側軸的中點對齊。


  • baseline: 項目的第一行文字的基線對齊。


2.6 align-content


多根軸線的對齊方式。如果項目只有一根軸線,該屬性不起作用。

  .box {
    align-content: flex-start | flex-end | center | space-between | space-around | stretch;
  }
  • stretch:默認值,當Flex子項未設置高度或者高度值為auto時,stretch起作用,將Flex子項高度設置為行高度。

  • flex-start:表示各行與側軸開始位置對齊,第一行緊靠側軸開始邊界,之后的每一行都緊靠前面一行

  • flex-end:表示各行與側軸的結束位置對齊,最后一行緊靠側軸結束邊界,之后的每一行都緊靠前面一行

  • center:表示各行與側軸中間對其

  • space-between:表示兩端對齊,中間間距相等。要注意特殊情況,當剩余空間為負數時,效果等同于flex-start

  • space-around:表示各行之間間距相等,中間間距是兩端間距的2倍。要注意特殊情況,當剩余空間為負數時,效果等同于center


四、子屬性


  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

4.1 order


定義項目的排列順序。數值越小,排列越靠前,默認為0。

.item {  order: <integer>;} 

4.2 flex-grow


定義項目對剩余空間的放大比例,默認為0,即如果存在剩余空間,也不放大。類似android里的weight

.item {  
  flex-grow: <number>; /* default 0 */  
}  

來看這里有例有據
深入理解 flex-grow & flex-shrink & flex-basis

4.3 flex-shrink


定義了項目的縮小比例,默認為1,即如果空間不足,該項目將縮小。

如果所有項目的flex-shrink屬性都為1,當空間不足時,都將等比例縮小。如果一個項目的flex-shrink屬性為0,其他項目都為1,則空間不足時,前者不縮小。負值對該屬性無效。

注意:flex-shrink只能在不換行的情況下使用

.item {  
  flex-shrink: <number>; /* default 1 */  
} 

來看這里有例有據
深入理解 flex-grow & flex-shrink & flex-basis

4.4 flex-basis


flex-basis屬性定義了在分配多余空間之前,項目占據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多余空間。它的默認值為auto,即項目的本來大小。

該屬性來設置該元素的寬度。當然,width也可以用來設置元素寬度。如果元素上同時設置了width和flex-basis,那么flex-basis會覆蓋width的值。

徹底搞懂css3 flex屬性學習筆記5

.item {  
  flex-basis: auto | length | percentage | content ; /* default auto */  
}  

4.5 flex


聚合屬性 這個屬性是flex-grow、flex-shrink和flex-basis屬性的簡寫
該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)。
建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關值。

.item {  
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ] 
}  

4.6 align-self


align-self屬性允許單個項目有與其他項目不一樣的對齊方式,可覆蓋align-items屬性。默認值為auto,表示繼承父元素的align-items屬性,如果沒有父元素,則等同于stretch。

.item {  
  align-self: auto | flex-start | flex-end | center | baseline | stretch;  
}

以下內容參考

阮一峰:Flex 布局教程:語法篇

Junru5:CSS Flex布局屬性整理

xiecg:深入理解 flex-grow & flex-shrink & flex-basis

black&white的css3 flex屬性學習筆記5

CSS教程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,156評論 6 529
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 97,866評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 174,880評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,398評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,202評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,743評論 1 320
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,822評論 3 438
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 41,962評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,476評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,444評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,579評論 1 365
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,129評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,840評論 3 344
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,231評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,487評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,177評論 3 388
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,568評論 2 370

推薦閱讀更多精彩內容

  • H5移動端知識點總結 閱讀目錄 移動開發基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,571評論 0 26
  • 移動開發基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,495評論 0 6
  • 應用在父元素上-flex box 1.模型 方向 換行 display: flex(盒子模型) 定義父元素為fle...
    林立鎮閱讀 3,396評論 0 27
  • 傳統的網頁布局基于盒裝模型,使用display,position,float屬性來達成各種布局。對于一些特殊的布局...
    exialym閱讀 2,639評論 0 11
  • 2009年,W3C 提出了一種新的方案----Flex 布局,可以簡便、完整、響應式地實現各種頁面布局。目前,它已...
    丫3閱讀 566評論 0 0