美文网首页
RN布局-Flexbox

RN布局-Flexbox

作者: quanCN | 来源:发表于2020-03-11 03:08 被阅读0次

Yoga

Facebook在React Native里引入了一种跨平台的基于CSS的布局系统,它实现了Flexbox规范。基于这个布局系统,不同团队终于可以走到一起,一起解决缺陷,改进性能,让这个系统更加地贴合Flexbox规范。随着这个系统的不断完善,Facebook决定对它进行重启发布,并取名Yoga。Yoga是一个表达性极强的布局库,并没有实现CSS的所有内容。到目前为止,Yoga已经有以下几个平台的绑定:Java(Android)Objective-C(UIKit)C#(.NET)。而且已经有很多项目在使用Yoga,比如React NativeComponents for AndroidOculus,等等。
Flex 布局教程:语法篇--阮一峰
RN官网布局文档

Flexbox

概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"


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

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

Flexbox属性

flex-direction
  • flex-direction在RN中属性名称为flexDirection
    flexDirection属性决定主轴的方向(即项目的排列方向)

    • row(默认值)
      主轴为水平方向,起点在左端
    • row-reverse
      主轴为水平方向,起点在右端
    • column
      主轴为垂直方向,起点在上沿
    • column-reverse
      主轴为垂直方向,起点在下沿
flex-wrap
  • flex-wrap在RN中属性名称为flexWrap
    flexWrap属性定义,如果一条轴线排不下,如何换行。
    默认情况下,项目都排在一条线(又称"轴线")上。

    • nowrap(默认)
      不换行,超过轴线内容不显示
    • wrap
      换行,第一行在上方
    • wrap-reverse
      换行,第一行在下方
flex-flow
  • flex-flow在RN中属性名称为flexFlow
    flexFlow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row|nowrap
    如:
    flexFlow:"row|wrap"
    
justify-content
  • justify-content在RN中属性为justifyContent
    justify-content属性定义了项目在主轴上的对齐方式

    • flex-start(默认值)
      左对齐
    • flex-end
      右对齐
    • center
      居中
    • space-between
      两端对齐,项目之间的间隔都相等
    • space-evenly
      均匀排列每个元素,每个元素之间的间隔相等
    • space-around
      每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍
align-items
  • align-items在RN中属性名称为alignItems
    align-items属性定义项目在交叉轴上如何对齐,具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下

    • stretch(默认值)
      如果项目未设置高度或设为auto,将占满整个容器的高度。
    • flex-start
      交叉轴的起点对齐
    • flex-end
      交叉轴的终点对齐
    • center
      交叉轴的中点对齐
    • baseline:
      项目的第一行文字的基线对齐
align-content
  • align-content在RN中属性为alignContent

    • stretch(默认值)
      轴线占满整个交叉轴
    • flex-start
      与交叉轴的起点对齐
    • flex-end
      与交叉轴的终点对齐
    • center
      与交叉轴的中点对齐
    • space-between
      与交叉轴两端对齐,轴线之间的间隔平均分布
    • space-around
      每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍
flex-grow
  • flex-grow在RN中属性为flexGrow
    定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

align-self
  • align-self在RN中属性为alignSelf
    align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。如果没有父元素,则等同于stretch

    • auto(默认值)
      表示继承父元素的align-items属性
    • flex-start
      交叉轴的起点对齐
    • flex-end
      交叉轴的终点对齐
    • center
      交叉轴的中点对齐
    • baseline:
      项目的第一行文字的基线对齐
    • stretch
      如果项目未设置高度或设为auto,将占满整个容器的高度
self
  • slef跟css略有不同
    • 正整数
      flex:<positive number>等同于flexGrow:<positive number>,flexShrink:1,flexBasis:0
    • 0
      组件尺寸由width和height决定,此时不再具有弹性
    • -1
      组件尺寸一般还是由width和height决定。但是当空间不够时,组件尺寸会收缩到minWidth和minHeight所设定的值

相关文章

  • React-Native中的Flexbox布局

    RN 的 Flexbox 布局的学习笔记 1.什么是 Flexbox 布局? Flexbox,弹性布局,可以以响应...

  • React Native布局

    RN布局 RN的flexbox主要有以下几个属性alignItems,alignSelf,flex,flexDir...

  • RN布局-Flexbox

    Yoga Facebook在React Native里引入了一种跨平台的基于CSS的布局系统,它实现了Flexbo...

  • React Native 布局

    RN布局 盒子模型 RN的flexbox主要有以下几个属性alignItems,alignSelf,flex,fl...

  • Flexbox总结

    Flexbox弹性布局是React Native中的布局,功能丰富,能够满足页面大量的排版需求。RN的FlexBo...

  • React-Native 认识style_3

    3.1 RN页面布局flexbox 当听到flexbox, 作为一个纯碎的iOS开发者,听到这个内心是懵逼的.只能...

  • ReactNative笔记-flexbox和position

    ReactNative笔记-flexbox和position 在rn中布局基本上全部是使用的flex,所以flex...

  • RN之FlexBox布局用法

    FlexBox 布局基本用法 1、什么是FlexBox Flexbox是Flexible Box的缩写,意为'弹性...

  • RN之使用Flexbox布局

    我们在React Native中使用flexbox规则来指定某个组件的子元素的布局。Flexbox可以在不同屏幕尺...

  • ReactNative学习之Flexbox布局

    Flexbox布局在RN开发中至关重要,它用来指定某个组件的子元素布局方式,可以使用一套布局适应多种屏幕,一般情况...

网友评论

      本文标题:RN布局-Flexbox

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