React Native基础之 Flexbox布局

一、什么是Flexbox?
 弹性盒模型(The Flexible Box Module),又叫Flexbox,意为“弹性布局”,旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同的屏幕,为盒装模型提供最大的灵活性。
 Flex布局的主要思想是:让容器有能力让其子项目能够改变其宽度、高度(甚至是顺序),以最佳方式填充可用空间。
二、Flex布局基于flex-flow流
 容器默认存在两根轴:水平的主轴(main axis)垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
 项目默认沿主轴排列,单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

React Native基础之 Flexbox布局_第1张图片

 根据伸缩项目排列方式的不同,主轴和侧轴方向也有所变化:

React Native基础之 Flexbox布局_第2张图片

三、Flex常用属性
 1.容器属性
 react-native中容器属性有四种,分别是:flexDirction、flexWrap、justifyContent、alignItems。
 1.1 flexDirection属性
 该属性决定主轴的方向(即项目的排列方向)。
 row:主轴为水平方向,起点在左端。
 row-reverse:主轴为水平方向,起点在右端。
 column(默认值 ):主轴为垂直方向,起点在上沿。
 column-reverse:主轴为垂直方向,起点在下沿。


React Native基础之 Flexbox布局_第3张图片

 1.2 flexWrap属性
 默认情况下,项目都排在一条线上(又称“轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。

React Native基础之 Flexbox布局_第4张图片

nowrap(默认值 ):不换行

React Native基础之 Flexbox布局_第5张图片

wrap:换行,第一行在上方

React Native基础之 Flexbox布局_第6张图片

wrap-reverse:换行,第一行在下方(和wrap 相反,仅在网页端可用)


React Native基础之 Flexbox布局_第7张图片

 1.3 justifyContent 属性
 该属性定义了伸缩项目在主轴线的对齐方式
 flex-start(默认值 ):伸缩项目向一行的起始位置靠齐。
 flex-end:伸缩项目向一行的结束位置靠齐。
 center:伸缩项目向一行的中间位置靠齐。
 space-between:两端对齐,项目之间的间隔都相等。
 space-around:伸缩项目会平均地分布在行里,两端保留一半的空间。


React Native基础之 Flexbox布局_第8张图片

 1.4 alignItems属性
 定义伸缩项目在交叉轴上如何对齐,可以把其想像成侧轴(垂直于主轴)的 “对齐方式”。
 flex-start :交叉轴的起点对齐。

 flex-end:交叉轴的终点对齐 。
 center:交叉轴的中点对齐。
 baseline:项目的第一行文字的基线对齐。(仅在web端可用,react-native不可用)
 stretch(默认值):如果项目未设置高度或设为 auto,将占满整个容器的高度。


React Native基础之 Flexbox布局_第9张图片

 2.元素属性
 2.1 flex属性
通过添加flex属性, 我们明确地将他选为flexbox模式。flex只能指定一个数字值,用来决定子元素间获得相对权重的大小,都设为1则获得相等的权重大小,分别设为1、3、1则获得的权重比为1:3:1。
React Native基础之 Flexbox布局_第10张图片

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


React Native基础之 Flexbox布局_第11张图片

你可能感兴趣的:(React Native基础之 Flexbox布局)