React native学习第五章:Flexbox

我们在React Native中使用flexbox规则来指定某个组件的子元素的布局。Flexbox可以在不同屏幕尺寸上提供一致的布局结构。

1.Flex Direction

在组件的style中指定flexDirection可以决定布局的主轴。子元素是应该沿着水平轴(row)方向排列,还是沿着竖直轴(column)方向排列呢?默认值是竖直轴(column)方向。

class TestFlexDirection extends Component{
        render(){
                return (
                    <View style={{flex:1,flexDirection:'column'}}>
                        <View style={{width:50,height:50,backgroundColor:'red'}}/>
                        <View style={{width:100,height:100,backgroundColor:'blue'}}/>
                        <View style={{width:50,height:150,backgroundColor:'black'}}/>
                    </View>
                );
            
         }
    
 };

row代表着水平对齐,即其top相等,column代表着垂直对齐,即其left相等


2.Justify Content

在组件的style中指定justifyContent可以决定其子元素沿着主轴排列方式。子元素是应该靠近主轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-startcenterflex-endspace-around以及space-between

class TestFlexDirection extends Component{
        render(){
                return (
                    <View style={{flex:1,flexDirection:'column'}}>
                        <View style={{width:50,height:50,backgroundColor:'red'}}/>
                        <View style={{width:100,height:100,backgroundColor:'blue'}}/>
                        <View style={{width:50,height:150,backgroundColor:'black'}}/>
                    </View>
                );
            
         }
 };

在column下,flex-start

center

flex-end

space-between


space-around


当我这么修改的时候:


const styles = StyleSheet.create({         
  bigblue: {
    color: 'blue',
    fontWeight: 'bold',
    fontSize: 30,
  },
  red: {
    color: 'red',
  },
    sizemake:{
        top:100,
        left:200,
    
        width:200,
        height:300,
        backgroundColor:'green',
    },
 
});

class TestJustifyContent extends Component{
           render(){
                return(
                       <View style={{
                                flex:1,
                                flexDirection:'column',
                                justifyContent:'space-around',
                         }}>
                         <View style={styles.sizemake}/>

                         <View style={{width: 50, height: 50, backgroundColor: 'skyblue'}} />
                        <View style={{width: 50, height: 50, backgroundColor: 'steelblue'}} />
                      </View>  
                );
                
            }
 }

3. Align Items

在组件的style中指定alignItems可以决定其子元素沿着次轴(与主轴垂直的轴,比如若主轴方向为row,则次轴方向为column)的排列方式。子元素是应该靠近次轴的起始端还是末尾段分布呢?亦或应该均匀分布?对应的这些可选项有:flex-startcenterflex-end以及stretch

注意:要使stretch选项生效的话,子元素在次轴方向上不能有固定的尺寸。以下面的代码为例:只有将子元素样式中的width: 50去掉之后,alignItems: 'stretch'才能生效。


class TestAlignment extends Component{
        render(){
                return(
                    <View style={{
                               flex:1,
                               flexDirection:'column',
                               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>
                );
         }
 }
1.center

stretch


flex-end

flex-start


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值