美文网首页
React Native基础之 Flexbox布局

React Native基础之 Flexbox布局

作者: 墨守青城 | 来源:发表于2016-09-08 22:12 被阅读23次

    一、什么是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。


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

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



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


    nowrap(默认值 ):不换行


    wrap:换行,第一行在上方


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



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



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

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



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

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


    相关文章

      网友评论

          本文标题:React Native基础之 Flexbox布局

          本文链接:https://www.haomeiwen.com/subject/kqxeettx.html