react native flex justifyContnt alignContent

18-03-23 16:09 字数 1250 阅读 2405

如果父元素设置了flex=1, 则会使得它的子元素扩张以撑满剩余的所有空间,并且子元素文字内容会显示在剩余空间的最下方。

Flex例子

.....................  
  <View style={styles.bottomBtnView}>  
            <Text style={styles.bottomLeftBtnView}>  
              忘记密码?  
            </Text>  
            <Text>  
              新用户注册  
            </Text>  
  </View>  
CSS:  
 bottomBtnView:{  
    flex:1,  
    flexDirection:\'row\',  
    borderWidth:2,  
    borderColor:\'black\',  
  },  
 bottomLeftBtnView:{  
    borderWidth:2,  
    borderColor:\'red\'  
  }  

效果如图

增加height

.....................  
  <View style={styles.bottomBtnView}>  
            <Text style={styles.bottomLeftBtnView}>  
              忘记密码?  
            </Text>  
            <Text>  
              新用户注册  
            </Text>  
  </View>  
CSS:  
 bottomBtnView:{  
 //  height:20,  
    flex:1,  
   height:50,  
    flexDirection:\'row\',  
    borderWidth:2,  
    borderColor:\'blue\',  
  },  
 bottomLeftBtnView:{  
    borderWidth:2,  
    borderColor:\'red\'  
  }  

效果图
发现一个问题,设置了height,但是好像并没有起作用,原因就是因为,一旦设置了flex,它的权重最高,就覆盖了height,而依然会撑满显示剩余空间。

去掉flex,保留height

代码同上,不同之处就是CSS部分:去掉flex,保留height
效果图

.....................  
  <View style={styles.bottomBtnView}>  
            <Text style={styles.bottomLeftBtnView}>  
              忘记密码?  
            </Text>  
            <Text>  
              新用户注册  
            </Text>  
  </View>  
CSS:  
 bottomBtnView:{  
 //  height:20,  
    flex:1,  
   height:50,  
    flexDirection:\'row\',  
    borderWidth:2,  
    borderColor:\'blue\',  
    justifyContent:\'flex-end\'  
  },  
 bottomLeftBtnView:{  
    borderWidth:2,  
    borderColor:\'red\'  
  }  

效果图
justifyContent的作用就是决定设置了该属性的组件内包含的子元素的布局方向轴,即其是按照父元素设置的flexDirection 属性的值来决定自己应该按照那个方向轴排列,如果flexDirection=row, 则其所有的子元素按照行排列布局,即其所有的子元素都在同一行)
具体自行官网
如上效果图就是所有的子元素就是按照同一行排列,并且是靠近方向轴的末尾端。

如果想要元素垂直居中,则需要设置alignContent属性

给CSS部分:

  bottomBtnView:{  
    height:50,  
    flexDirection:\'row\',  
    borderWidth:2,  
    borderColor:\'blue\',  
    justifyContent:\'center\',  
    alignItems :\'center\'  
  },  
  bottomLeftBtnView:{  
    borderWidth:2,  
    borderColor:\'red\'  
  }  

效果图
则alignContent是让其所有的子元素在沿着与主轴垂直的轴方向排列(也叫次轴),即此时所有的子元素应该靠近次轴中心的位置,也就是垂直居中了!

1人点赞>
关注 收藏 改进 举报
1 条评论
排序方式 时间 投票
叶秋

多谢分享,flex布局的确是好用。

请登录后发表评论
文章
1
粉丝
0
喜欢
1
收藏
0
排名 : 52
访问 : 2405
私信
文章归档