1. 程式人生 > >認識flex屬性

認識flex屬性

1、介紹

佈局的傳統解決方案,基於盒狀模型,依賴 display屬性 + position屬性 + float屬性。它對於那些特殊佈局非常不方便,比如,垂直居中就不容易實現。2009年,W3C提出了一種新的方案—-Flex佈局,可以簡便、完整、響應式地實現各種頁面佈局。
flex(flexible box:彈性佈局盒模型)。在webkit核心的瀏覽器中使用時,必須加上 -webkit-字首。
使用flex佈局的容器(flex container),它內部的元素自動成為flex專案(flex item)。
容器預設存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。專案預設沿主軸排列。
注意:flex容器內元素,即flex item

的float、clear、vertical-align屬性將失效

2、容器屬性

1:flex-direction
2:flex-wrap
3:flex-flow
4:justify-content
5:align-items
6:align-content

2.1 flex-direction屬性

決定主軸的方向,即專案排列的方向.
有四個可選值:row(預設)|row-reverse|column|column-reverse

  • row(預設值):主軸為水平方向,起點在左端
  • row-reverse:主軸為水平方向,起點在右端
  • column:主軸為垂直方向,起點在上沿
  • column-reverse:主軸為垂直方向,起點在下沿

2.2 flex wrap 屬性

預設情況下,item排列在一條直線上,flex-wrap決定當排列不下時是否換行以及換行的方式.
可選值有:nowrap(預設)|wrap|wrap-reverse

  • nowrap(預設):不換行
  • wrap:換行,第一行在上方
  • wrap-reverse:換行,第一行在下方

2.3 justify-content屬性

justify-content屬性定義了專案在主軸上的對齊方式
可選值有:flex-start | flex-end | center | space-between | space-around

  • flex-start(預設值):左對齊
  • flex-end:右對齊
  • center: 居中
  • space-between:兩端對齊,專案之間的間隔都相等
  • space-around:每個專案兩側的間隔相等。所以,專案之間的間隔比專案與邊框的間隔大一倍

2.4 align-items屬性

align-items屬性定義專案在交叉軸上如何對齊
可選值有:flex-start | flex-end | center | baseline | stretch

  • flex-start:交叉軸的起點對齊
  • flex-end:交叉軸的終點對齊
  • center:交叉軸的中點對齊
  • baseline: 專案的第一行文字的基線對齊
  • stretch(預設值):如果專案未設定高度或設為auto,將佔滿整個容器的高度

2.5 align-content屬性

align-content屬性定義了多根軸線的對齊方式。如果專案只有一根軸線,該屬性不起作用
可選值有:flex-start | flex-end | center | space-between | space-around | stretch

  • flex-start:與交叉軸的起點對齊
  • flex-end:與交叉軸的終點對齊
  • center:與交叉軸的中點對齊
  • space-between:與交叉軸兩端對齊,軸線之間的間隔平均分佈
  • space-around:每根軸線兩側的間隔都相等。所以,軸線之間的間隔比軸線與邊框的間隔大一倍
  • stretch(預設值):軸線佔滿整個交叉軸

2.6 flex-flow 屬性

flex-flow屬性是flex-direction屬性和flex-wrap屬性的簡寫形式,預設值為row nowrap。

3、flex item 屬性

1:order
2:flex-grow
3:flex-shrink
4:flex-basis
5:flex
6:align-self

3.1 order 屬性

order屬性定義專案的排列順序。數值越小,排列越靠前,預設為0

3.2 flex-grow 屬性

flex-grow屬性定義專案的放大比例,預設為0,即如果存在剩餘空間,也不放大

3.3 flex-shrink 屬性

flex-shrink屬性定義了專案的縮小比例,預設為1,即如果空間不足,該專案將縮小

3.4 flex-basis 屬性

flex-basis屬性定義了在分配多餘空間之前,專案佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的預設值為auto,即專案的本來大小

3.5 flex 屬性

flex屬性是flex-grow, flex-shrink 和 flex-basis的簡寫,預設值為0 1 auto。後兩個屬性可選

3.6 align-self 屬性

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