React Native开发之——Flex布局
前言
React中引入了flexbox概念,flexbox是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方案,可以简便、完整、响应式地实现各种页面布局。你可以简单的理解为flexbox是CSS领域类似Android中 LinearLayout的一种布局,但是要比 LinearLayout要强大的多。
本文主要讲述Flex布局,包含以下几个:
- flexDirection
- flexWrap
- justifyContent
- alignItems
- flex
Flex布局
Flex布局概念
图是W3C Flexbox布局模型:
flexbox由伸缩容器和伸缩项目组成;任何一个元素都可以指定flexbox布局,伸缩容器的子元素可以称为伸缩项目;伸缩项目使用伸缩布局模型来排版;在默认情况下,伸缩容器由两根轴组成:主轴(main axis)和交叉轴(cross axis),主轴的开始位置叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end;伸缩项目在主轴上占据的空间叫做main size,在交叉轴上占据的空间叫做cross size;
React Native目前版本为0.54, 本文所用属性位于APIs->Layout Props下
flexDirection
属性说明
flexDirection控制主轴的方向,它有四个值:
- 'row'
- 'row-reverse'
- 'column'
- 'column-reverse'
代码
效果图
flexWrap
属性说明
flexWrap控制当子view到达末尾时是否绕行,它有两个值(默认是nowrap):
- wrap
- nowrap
代码
增加到12个Text
效果
flexWrap=nowrap时,如下:
flexWrap=wrap时,如下:
justifyContent
属性说明
justifyContent,用来定义伸缩项目沿主轴线的对其方式:,它有以下6个值:
- flex-start
- flex-end
- center
- space-between
- space-around
- space-evenly
代码
效果图
alignItems
属性说明
alignItems,用来定义交叉轴的对其方式:,它有以下5个值:
- flex-start
- flex-end
- center
- stretch
- baseline
代码
效果图
flex
属性说明
flex(数值型的属性值):类似于Android中的layout-weight,用于收缩项目向右尽可能扩展。
代码
效果
其他
参考: RNFlex