美文网首页
布局 flex, justifyContent,alignCon

布局 flex, justifyContent,alignCon

作者: 吧啦啦小汤圆 | 来源:发表于2018-03-23 16:08 被阅读58次

    如果父元素设置了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是让其所有的子元素在沿着与主轴垂直的轴方向排列(也叫次轴),即此时所有的子元素应该靠近次轴中心的位置,也就是垂直居中了!

    相关文章

      网友评论

          本文标题:布局 flex, justifyContent,alignCon

          本文链接:https://www.haomeiwen.com/subject/sndxcftx.html