引言
由于小编忙于当前的项目,暂未更新简书,现在继续和大家一起去React Native门派学习,相信通过前几篇文章的介绍,我们对React Native门派有了一个大致了解,并且基本上搭建好了环境以及完成了新手村长的任务,写出了万门之祖的Hello world,那么接下来我们将逐一的了解,React Native中的每一个组件师兄,剖析他们的构成以及属性。咱们还是老套路直奔主题,上干货。
Flexbox布局
在学习各个组件之前,我们先学习一下Flexbox布局即这些组件如何排布布局的,如果你学过CSS布局,那么React Native中的Flexbox的工作原理与CSS基本一样的,没接触过也没关系,我们一起重头学习。
一.容器属性
(一).Flex Direction
flexDirection可以决定布局的主轴的方向,即子元素是横着排布还是竖着排布,
1.column是竖直轴(默认值)方向即竖着排布
![](https://img.haomeiwen.com/i4801338/e30255c489711c29.png)
2.row是水平轴方向即横着排布
![](https://img.haomeiwen.com/i4801338/538f9b61bb866b20.png)
(二).Justify Content
justifyContent可以决定其子元素沿着主轴的排列方式,即对齐方式
1.flex-start即左对齐
![](https://img.haomeiwen.com/i4801338/05f7da2ae32f8ad4.png)
2.flex-end即右对齐
![](https://img.haomeiwen.com/i4801338/54584d12d920315a.png)
3.center即水平居中对齐
![](https://img.haomeiwen.com/i4801338/03f4d97826aba6ac.png)
4.space-between即两端对齐
![](https://img.haomeiwen.com/i4801338/924045db0253f116.png)
5.space-around即分散对齐
![](https://img.haomeiwen.com/i4801338/853a2b0a023fdebb.png)
(三).Align Items
alignItems可以决定其子元素沿着次轴的对齐方式
1.flex-start即起点对齐
![](https://img.haomeiwen.com/i4801338/093a2e002831eb0f.png)
2.flex-end即终点对齐
![](https://img.haomeiwen.com/i4801338/d176e1e0c6d37660.png)
3.center即垂直居中对齐
![](https://img.haomeiwen.com/i4801338/556cdd311cdff145.png)
4.stretch
如果项目未设置高度或设为auto,将占满整个容器的高度(要使stretch选项生效的话,子元素在次轴方向上不能有固定的尺寸)
![](https://img.haomeiwen.com/i4801338/e43f502748fab731.png)
5.baseline
项目的第一行文字的基线对齐。
![](https://img.haomeiwen.com/i4801338/ce43fdcca0dac052.png)
(四).flexWrap]
水平或垂直布局时:如果子View放不下,则自动换行, 默认为'nowrap'(不换行)
![](https://img.haomeiwen.com/i4801338/a35127cf59fb907e.png)
1.nowrap即不换行
![](https://img.haomeiwen.com/i4801338/c694dc8bb5ca434b.png)
2.wrap即换行(第一行在上方)
![](https://img.haomeiwen.com/i4801338/01b2889158c299a4.png)
3.wrap-reverse即(第一行在下方)
![](https://img.haomeiwen.com/i4801338/2a16ec4c26f0045b.png)
二.元素属性
(一).alignSelf
允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
![](https://img.haomeiwen.com/i4801338/7e5c2ee3738d0523.png)
(二).flex
权重,类似Android中weight
当flex取正整数值时是一个正数, 它使组件具有灵活性, 并且它的大小与其 flex 值成正比。因此, 将flex设置为2的组件将占用空间的两倍, 作为具有flex设置为1的组件。
当flex为0时, 该组件根据width和height进行调整, 并且不灵活。
当flex为-1 时, 组件通常根据width和height进行调整。但是, 如果没有足够的空间, 组件将收缩到其minWidth和minHeight.
flexGrow、flexShrink 和 flexBasis 的工作与 CSS 相同。
![](https://img.haomeiwen.com/i4801338/d0c2ef22e0eb990e.png)
(三).position
定位模式,分为absolute和relative两种
1.absolute
即绝对定位,相对于父组件的位置
![](https://img.haomeiwen.com/i4801338/e2d51c221bff4e40.png)
2.relative
相对定位,相对于当前位置
![](https://img.haomeiwen.com/i4801338/c9d78e7781dc9250.png)
3.zIndex
定位的元素及其子代的zIndex顺序。当元素重叠时, zIndex顺序决定哪一个覆盖另一个。具有较大z-index的元素通常覆盖具有较低的元素
![](https://img.haomeiwen.com/i4801338/7a93b60576d7bb48.png)
(四).padding和margin
margin是指从自身边框到另一个容器边框之间的距离,就是容器外距离。 padding是指自身边框到自身内部另一个容器边框之间的距离,就是容器内距离,下面这张是CSS的效果图,只是名字不一样(marginTop),原理都是一样;
![](https://img.haomeiwen.com/i4801338/23995cf6e6c87f53.png)
除了图上那些属性还有如下属性
1.margin
marginTop, marginLeft, marginBottom, marginRight
marginHorizontal: 水平外距离相当于marginLeft和marginRight
marginVertical:垂直外距离相当于marginTop和marginBottom
2.border
borderWidth,borderTopWidth,borderLeftWidth,borderBottomWidth,borderRightWidth
3.padding
paddingTop,paddingBottom,paddingLef,paddingRight
paddingHorizontal: 水平内距离相当于paddingLeft和paddingRight
paddingVertical:垂直内距离相当于paddingTop和paddingBottom
(五).overflow
指定在其块级容器的大小太大时, 是剪辑内容、显示滚动条还是显示溢出的内容.
![](https://img.haomeiwen.com/i4801338/d293df95be283ea9.png)
网友评论