React Native——flex(彈性佈局)

flex,是flexible box的簡稱,意爲彈性佈局,在RN中是用來描述子組件在父組件中的對齊方式和相對位置,使其可以適應不一樣的屏幕,爲界面佈局帶來更大的靈活性。css

flex佈局由flex container 和flex item組成。flex container分爲主軸(main axis)和交叉軸(across axis)。主軸默認是豎直方向。css3

flex

flex爲彈性容器的屬性,在css3中由flex-grow、flex-shrink、flex-basis三個屬性組合起來,其中後面兩個是可選參數。在RN中flex默認爲flexGrow屬性。佈局

  • flexGrow 元素主軸尺寸佔當前容器主軸尺寸的比重,默認值爲0。

flexDirection

flexDirection屬性爲主軸方向,取值爲columncolumn-reverserowrow-reverse。默認值爲columnflex

  • column 豎直方向,起點在頂部,子組件從上到下排列。
  • column-reverse 豎直方向,起點在底部,子組件從下到上排列。
  • row 水平方向,起點在左側,子組件從左到右排列。
  • row-reverse 水平方向,起點在右側,子組件從右到左排列。

flexWrap

flexWrap表示沿主軸方向放不下是否須要換行。取值爲:wrapnowrap,默認值爲wrapspa

  • wrap 主軸方向放不下要換行。
  • nowrap 主軸方向放不下不換行。

flexWrap屬性值對比圖(其中`flexDirection: 'row'`)
flexWrap屬性值對比圖(其中`flexDirection: 'row'`)

justifyContent

justifyContent表示容器中的子組件在主軸方向上的對齊方式,取值爲flex-startflex-endcenterspace-betweenspace-around,默認值爲flex-start3d

  • flex-start 在主軸方向上和主軸的起點對齊。
  • flex-end 在主軸方向上和主軸的終點對齊。
  • center 在主軸方向上居中對齊。
  • space-between 在主軸方向上兩端對齊,每一個item的間隔相等,第一個item和主軸起點、最後一個item和主軸終點沒有間隔。
  • space-around 在主軸方向上分散對齊,每一個item的兩邊都有相同的間隔。主軸起點和終點與鄰近的兩個item的間隔只有中間item之間的間隔的一半。

justifyContent屬性值對比圖(其中`flexDirection: 'row'`)
justifyContent屬性值對比圖(其中`flexDirection: 'row'`)

alignItems

alignItems表示容器中子組件在交叉軸方向上的對齊方式,取值爲:flex-startflex-endcenterstretchbaseline,默認值爲flex-startcode

  • flex-start 在交叉軸方向上和交叉軸的起點對齊。
  • flex-end 在交叉軸方向上和交叉軸的終點對齊。
  • center 在交叉軸方向上居中對齊。
  • stretch 若是子組件未設置交叉軸方向的大小或設爲auto,將會在交叉軸方向佔滿整個容器。
  • baseline 與子組件第一行文字的基線對齊。

alignItems屬性值對比圖(其中`flexDirection: 'row'`)
alignItems屬性值對比圖(其中`flexDirection: 'row'`)

alignContent

alignContent定義了多根軸線時,交叉軸方向的對齊方式,若是隻有一根軸,該屬性是沒有效果的。取值爲:flex-startflex-endcenterspace-betweenspace-aroundstretch。默認值爲flex-startcdn

  • flex-start 在交叉軸方向上和交叉軸的起點對齊。
  • flex-end 在交叉軸方向上和交叉軸的終點對齊。
  • center 在交叉軸方向上居中對齊。
  • space-between 與交叉軸兩端對齊,軸線之間的間距間隔相等,第一根軸線上的item與交叉軸起點、最後一根軸線上的item與交叉軸終點沒有間隔。
  • space-around 與交叉軸兩端對齊,軸線之間的間距間隔相等,第一根軸線上的item與交叉軸起點、最後一根軸線上的item與交叉軸終點的間隔只有中間軸線上item間隔的一半。
  • stretch 若是子組件未設置交叉軸方向的大小或設爲auto,將會在交叉軸方向佔滿整個容器。

alignContent屬性值對比圖(其中`flexDirection: 'row'`)
alignContent屬性值對比圖(其中`flexDirection: 'row'`)

alignSelf

alignSelf定義了子組件自身對齊方式,該屬性會覆蓋父組件的alignItems屬性。取值爲:autoflex-startflex-endcenterstretch,默認值爲autoblog

  • auto 繼承了它的父組件的 alignItems屬性,如父組件沒有,則爲stretch
  • flex-start 子組件在交叉軸方向與交叉軸起點對齊。
  • flex-end 子組件在交叉軸方向與交叉軸終點對齊。
  • center 子組件在交叉軸方向居中對齊。
  • stretch 若是沒有在交叉軸方向沒有設置大小,則會拉伸在交叉軸方向佔滿整個容器。

alignSelf屬性值對比圖(其中父組件`flexDirection: 'row'`)
alignSelf屬性值對比圖(其中父組件`flexDirection: 'row'`)
相關文章
相關標籤/搜索