ReactNative之Flex布局

一:什么是FlexBox布局?

弹性盒模型(The Flexible Box Module),又叫Flexbox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同屏幕,为盒装模型提供最大的灵活性。

Flex布局主要思想是:让容器有能力让其子项目能够改变其宽度、高度(甚至是顺序),以最佳方式填充可用空间;

容器默认存在两根轴:水平的主轴(main axis)垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。

项目默认沿主轴排列,单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

二:容器属性:

ReactNative支持的容器属性有flexDirection、flexWrap、justifyContent和alignItems。

1、 flexDirection属性

flexDirection属性决定了主轴的方向,它有两个值:

row: 主轴为水平方向,起点在左端

column: 主轴为垂直方向,起点在顶部

2、flexWrap属性

flexWrap属性定义一条轴线排不下时是否折行。它有两个值,分别是’wrap’和’nowrap’,分别代表支持换行和不支持换行,默认是’nowrap’。

3、justifyContent属性

主轴的对齐方式,默认为’flex-start’,它的值有五个:

flex-start:主轴起点对齐

flex-end:主轴终点

center:居中

space-between:两端对齐,项目之间的间隔都相等

space-around: 每个项目两侧的间隔相等。项目之间的间隔比项目与边框的间隔大一倍。

4、alignItems属性

交叉轴的对齐方式,默认为’stretch’,它有四个值:

flex-start: 交叉轴的起点对齐

flex-end: 交叉轴的终点对齐

center: 交叉轴的中心对齐

stretch: 容器中的所有项目拉伸填满整个容器

三: 元素属性

1)flex

“flex-grow”、“flex-shrink”和“flex-basis”三个属性的缩写, 其中第二个和第三个参数(flex-shrink、flex-basis)是可选参数。

默认值为“0 1 auto”。

宽度 = 弹性宽度 * ( flexGrow / sum( flexGorw ) )

2)alignSelf:“auto | flex-start | flex-end | center | baseline | stretch”

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

3)屏幕宽高获取

var Dimensions =require('Dimensions');

let {width, height, scale} = Dimensions.get("window");

你可能感兴趣的:(ReactNative之Flex布局)