1. 程式人生 > >react-native之flex佈局總結

react-native之flex佈局總結

  • flex佈局之橫縱佈局
      <View style={{flex: 1, flexDirection: 'row'}}>
        <View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'steelblue
'}}
/> </View>

當 flexDirection 為 row 的時候,為橫向佈局 , 當 flexDirection 為 column 的時候,為縱向佈局

  • Justify Content
    在元件的style中指定justifyContent可以決定其子元素沿著主軸的排列方式。子元素是應該靠近主軸的起始端還是末尾段分佈呢?亦或應該均勻分佈?對應的這些可選項有:flex-start、center、flex-end、space-around以及space-between。
    需要注意的是 Justify Content 同 flexDirection=’row’ 配合使用,如:
      <View style={{
        flex: 1,
        flexDirection: 'row',
        justifyContent: 'space-between',
      }}>
        <View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
        <View
style=
{{width: 50, height: 50, backgroundColor: 'steelblue'}} /> </View>

而如果此時 flexDirection: ‘column’, 那麼在 justifyContent 為 center、flex-end、space-around的時候都會顯示異常,由此可見 justifyContent 更適合與 flexDirection=’row’ 配合使用;
而相對的alignItems就更適合同 flexDirection: ‘column’,使用了,如:

      <View style={{
        flex: 1,
        flexDirection: 'column',
        justifyContent: 'center',
        alignItems: 'center',
      }}>
        <View style={{width: 50, height: 50, backgroundColor: 'powderblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
        <View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
      </View>

在元件的style中指定alignItems可以決定其子元素沿著次軸(與主軸垂直的軸,比如若主軸方向為row,則次軸方向為column)的排列方式。子元素是應該靠近次軸的起始端還是末尾段分佈呢?亦或應該均勻分佈?對應的這些可選項有:flex-start、center、flex-end以及stretch。

注意:要使stretch選項生效的話,子元素在次軸方向上不能有固定的尺寸。以下面的程式碼為例:只有將子元素樣式中的width: 50去掉之後,alignItems: ‘stretch’才能生效。 stretch在width去掉後會自動拓展延伸。