ReactNative开发(三)之布局详解

一、FlexBox布局

React Native中的布局方式为FlexBox,在React Native中布局采用的是FleBox(弹性框)进行布局。FlexBox在不同尺寸的设备上都能保持基本一致的布局,属于CSS3弹性布局规范,在这里是没有尺寸的单位的,代表了独立像素,下面来介绍一些布局的使用方式

二、父布局的属性

1> flexDirection        enum(‘row’, ‘column’,’row-reverse’,’column-reverse’)
2> flexWrap             enum(‘wrap’, ‘nowrap’)
3> justifyContent       enum(‘flex-start’, ‘flex-end’, ‘center’, ‘space-between’, ‘space-around’)
4> alignItems           enum(‘flex-start’, ‘flex-end’, ‘center’, ‘stretch’)

1> flexDirection

//flexDirection有四个属性值
row: 从左向右依次排列
row-reverse: 从右向左依次排列
column(default): 默认的排列方式,从上向下排列
column-reverse: 从下向上排列

这里给出一个样例代码,布局在RN中默认是从上往下排列

<View style={ {flexDirection:'row',backgroundColor:"darkgray",marginTop:20}}>
          <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}>
            <Text style={ {fontSize:16}}>1</Text>
          </View>
          <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}>
            <Text style={ {fontSize:16}}>2</Text>
          </View>
          <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}>
            <Text style={ {fontSize:16}}>3</Text>
          </View>
          <View style={ {width:40,height:40,backgroundColor:"darkcyan",margin:5}}>
            <Text style={ {fontSize:16}}>4</Text>
          </View>
        </View>

row: 从左向右依次排列

这里写图片描述

row-reverse: 从右向左依次排列

这里写图片描述

column(default): 默认的排列方式,从上向下排列

这里写图片描述

column-reverse: 从下向上排列

这里写图片描述

2> flexWrap

felxWrap表示是否允许多行排列,默认为nowrap,设置为wrap相当于自动换行的设置

nowrap flex的元素只排列在一行上,可能导致溢出。
wrap flex的元素在一行排列不下时,就进行多行排列。
   <View style={ {height:500,flexDirection:'row-reverse',backgroundColor:"darkgray",marginTop:20,flexWrap:'wrap'}}>

允许换行,flexWrap:’wrap’

这里写图片描述

不允许换行,flexWrap:’nowrap’

这里写图片描述

3> justifyContent

justifyContent
属性定义了浏览器如何分配顺着父容器主轴的弹性(flex)元素之间及其周围的空间,默认为flex-start,其实就是安排子布局在他里面的位置,靠左靠右或居中其属性如下:
flex-start(default)
从行首开始排列。每行第一个弹性元素与行首对齐,同时所有后续的弹性元素与前一个对齐。

flex-end
从行尾开始排列。每行最后一个弹性元素与行尾对齐,其他元素将与后一个对齐。

center
伸缩元素向每行中点排列。每行第一个元素到行首的距离将与每行最后一个元素到行尾的距离相同

space-between
在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素与行首对齐,每行最后一个元素与行尾对齐。

space-around
在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素到行首的距离和每行最后一个元素到行尾的距离将会是相邻元素之间距离的一半。

flex-end
这里写图片描述

center
这里写图片描述

space-between(第一个和最后一个靠边,中间元素间距相同)
这里写图片描述

space-around(行里面的每个元素左右间距相同)
这里写图片描述

4> alignItems

alignItems属性以与justify-content相同的方式在侧轴方向上将当前行上的弹性元素对齐,默认为stretch。其实想当于纵轴的排列和3是一个性质

flex-start 元素向侧轴起点对齐。
flex-end 元素向侧轴终点对齐。
center 元素在侧轴居中,如果元素在侧轴上的高度高于其容器,那么在两个方向上溢出距离相同。
stretch 弹性元素被在侧轴方向被拉伸到与容器相同的高度或宽度。

flex-start 元素向侧轴起点对齐

这里写图片描述

flex-end 元素向侧轴终点对齐

这里写图片描述

center 元素在侧轴居中

这里写图片描述

stretch 弹性元素被在侧轴方向被拉伸

这里写图片描述

三、子View的属性

1> alignSelf

alignSelf属性以属性定义了flex容器内被选中项目的对齐方式。注意:alignSelf 属性可重写灵活容器的 alignItems 属性,包括以下几点,同父布局类似显示;

auto(default) 元素继承了它的父容器的 align-items 属性。如果没有父容器为“stretch”
stretch 元素被拉伸以适应容器。
center  元素位于容器的中心。
flex-start  元素位于容器的开头。
flex-end    元素位于容器的结尾。

2> flex

flex 属性定义了一个可伸缩元素的能力,默认为0,在Android中相当于权重;

四、其他布局的属性

1>视图边框

borderBottomWidth   number 底部边框宽度
borderLeftWidth     number 左边框宽度
borderRightWidth    number 右边框宽度
borderTopWidth      number 顶部边框宽度
borderWidth         number 边框宽度
borderColor         边框颜色

2>外边距

margin              number 外边距
marginBottom        number 下外边距
marginHorizontal    number 左右外边距
marginLeft          number 左外边距
marginRight         number 右外边距
marginTop           number 上外边距
marginVertical      number 上下外边距

3>内边距

padding             number 内边距
paddingBottom       number 下内边距
paddingHorizontal   number 左右内边距
paddingLeft         number 做内边距
paddingRight        number 右内边距
paddingTop          number 上内边距
paddingVertical     number 上下内边距

4>边缘

left number     元素左边缘,定位元素左外边距边界与其包含块左边界之间的偏移。
right number    元素右边缘,定位元素右外边距边界与其包含块右边界之间的偏移
top number      元素顶部边缘,一个定位元素上外边距边界与其包含块上边界之间的偏移。
bottom number   元素底部边缘,一个定位元素下外边距边界与其包含块下边界之间偏移。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值