需求产生:这个需求呢是做属性气泡的时候产生的,比如热搜推荐的推荐气泡数量就不一定,所以要分行显示。
如果大家认真阅读了flexbox的布局教程,那么应该会注意到flexWrap这个属性。这个就是换行的属性。
RN的View直接就支持分行显示:
flexWrap容器属性: `nowrap | wrap | wrap-reverse`
flexWrap容器属性:
nowrap-不分行
wrap-分行
wrap-reverse - 分行从下往上排列
3:在React中,Flexbox有6种容器属性,6种项目属性。而在React Native中,有4个容器属性,2个项目属性,分别是:
容器属性:flexDirection flexWrap justifyContent alignItems
项目属性:flex alignSelf
3.1: flexDirection容器属性: `row | row-reverse | column | column-reverse`
该属性决定主轴的方向(即项目的排列方向)。
row:主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column(默认值):主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
![](https://i-blog.csdnimg.cn/blog_migrate/a196708f3392be004fef99daba608d4e.jpeg)
3.2:flexWrap容器属性: `nowrap | wrap | wrap-reverse`
默认情况下,项目都排在一条线(又称"轴线")上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
![](https://i-blog.csdnimg.cn/blog_migrate/9d30b62618d9b1dae87680ef50384572.jpeg)
3.2.1 nowrap(默认值):不换行
![](https://i-blog.csdnimg.cn/blog_migrate/66fddd23aea118c561e3d621adf0632a.png)
3.2.2 wrap:换行,第一行在上方
![](https://i-blog.csdnimg.cn/blog_migrate/bc0d2f814e7458122e51b3015bc27544.jpeg)
3.2.3 wrap-reverse:换行,第一行在下方。(和wrap相反)
![](https://i-blog.csdnimg.cn/blog_migrate/53134b9b7357f79408ad2774085cd771.png)
3.3:justifyContent容器属性:`flex-start | flex-end | center | space-between | space-around`
定义了伸缩项目在主轴线的对齐方式
flex-start(默认值):伸缩项目向一行的起始位置靠齐。
flex-end:伸缩项目向一行的结束位置靠齐。
center:伸缩项目向一行的中间位置靠齐。
space-between:两端对齐,项目之间的间隔都相等。
space-around:伸缩项目会平均地分布在行里,两端保留一半的空间。
![](https://i-blog.csdnimg.cn/blog_migrate/1dbf5d911f33d8d1b09f872076115b99.png)
3.4:alignItems容器属性:`flex-start | flex-end | center | baseline | stretch`
定义项目在交叉轴上如何对齐,可以把其想像成侧轴(垂直于主轴)的“对齐方式”。
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐 。
center:交叉轴的中点对齐。
baseline:项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
![](https://i-blog.csdnimg.cn/blog_migrate/5a8339d52185492018f9fc907e0d76ad.png)
3.5:flex项目属性:
“flex-grow”、“flex-shrink”和“flex-basis”三个属性的缩写, 其中第二个和第三个参数(flex-shrink、flex-basis)是可选参数。默认值为“0 1 auto”。
宽度 = 弹性宽度 * ( flexGrow / sum( flexGorw ) )
![](https://i-blog.csdnimg.cn/blog_migrate/76a2ee6531fdd3688fa5e635c8225266.png)
3.6:alignSelf项目属性:
“auto | flex-start | flex-end | center | baseline | stretch”
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。
默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
![](https://i-blog.csdnimg.cn/blog_migrate/f7e4ef6fb3c064de6c043c1d5471e50a.png)