1. 程式人生 > >React Native樣式總結(持續更新)

React Native樣式總結(持續更新)

由於剛從android 原生轉過來做混合開發,習慣了什麼線性佈局,相對佈局等,對ReactNative 中的佈局還是一團黑,慢慢學習吧。每天總結一些自己遇到的。

發現一個兄弟已經總結了,就搬過來,原文地址:請點選這裡

Flexbox 介紹


flexbox是由伸縮容器和伸縮專案組成。任何一個元素都可以使用flexbox佈局。容器預設存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end

;交叉軸的開始位置叫做cross start,結束位置叫做cross end
專案預設沿主軸排列。單個專案佔據的主軸空間叫做main size,佔據的交叉軸空間叫做cross size

容器屬性

1.flexDirection(決定主軸方向)
2.flexWrap
3.flexFlow
4.justifyContent
5.alignItems
6.alignContent

1.flexDirection 專案的排列方向

  1. container: {
  2. flexDirection:‘row’, //主軸水平,起點在左,預設值
  3. flexDirection:‘column’
    , //主軸垂直,起點在上
  4. flexDirection:‘row-reverse’, //主軸水平,起點在右,
  5. flexDirection:‘column-reverse’, //主軸垂直,起點在下
  6. }


2.flexFlow 預設情況下,專案都排在一條直線上,主要定義如果一條直線排不下,如何換行

  1. container: {
  2. flexWrap:'nowrap', // 不換行, 預設
  3. flexWrap:'wrap', // 換行,第一行在上方
  4. flexWrap:'wrap-reverse', // 換行,第一行在下方
  5. }

nowrap


wrap


wrap-reverse


3.flexFlow是flexDirection和flexWrap的簡寫形式,預設值為 主軸水平、不換行
  1. container: {
  2. flexFlow:'flex-direction',
  3. flexFlow:'flex-wrap',
  4. }

4.justifyContent定義了主軸上的對齊方式
  1. container: {
  2. justifyContent:'flex-start', // 左對齊,預設值
  3. justifyContent:'flex-end', // 右對齊
  4. justifyContent:'center', // 居中
  5. justifyContent:'space-between', // 兩端對齊,專案之間間隔相等
  6. justifyContent:'space-around', // 每個專案兩端的間隔相等。所以專案間的間隔比專案與邊框的間隔大一倍
  7. }

5.alignItems 在交叉軸上如何對齊,只有在flexDirection為column時

  1. container: {
  2. alignItems:'flex-start', // 交叉軸起點對齊
  3. alignItems:'flex-end', // 交叉軸終點對齊
  4. alignItems:'center', // 交叉軸中點對齊
  5. alignItems:'baseline', // 專案第一行文字的基線對齊
  6. alignItems:'stretch', // 如果專案未設定高度或設為auto,將佔滿整個容器的高度
  7. }

6.alignContent 定義了多根軸線的對齊方式,如果專案只有一根軸線,該屬性不起作用。

  1. container: {
  2. alignContent:'flex-start', // 與交叉軸的起點對齊
  3. alignContent:'flex-end', // 與交叉軸的終點對齊
  4. alignContent:'center', // 與交叉軸的中點對齊
  5. alignContent:'space-between', // 與交叉軸兩端對齊,軸線之間的間距間隔平均分佈
  6. alignContent:'space-around', // 每根軸線兩側的間隔相等
  7. alignContent:'stretch', // 軸線佔滿整個交叉軸,預設值
  8. }


6.flex當一個元素定義了flex屬性時,表示該元素是可伸縮的(flex的屬性值大於0的時候才可伸縮)

  1. container: {
  2. flex:1, //只看中比例,不看重實際數值
  3. }