前言

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

FlexBox在大部分情况下都是处理Item在Container中位置和尺寸的关系。

FlexBox在布局中能解决很多问题,如浮动布局、屏幕适配、水平垂直居中、自动分配宽度等。

FlexBox布局属性

flexDirection主轴方向:

flexDirection属性用来设置主轴的方向,即视图中子控件的排列顺序,有如下几种选项:

  • column(默认值):子控件从上向下排列;
  • column-reverse:子控件从下向上排列;
  • row:子控件从左向右排列;
  • row-reverse:子控件从右向左排列。

justifyContent对齐方式:

justifyContent属性用来设置伸缩项在主轴线的对齐方式,有如下几种选项:

  • flex-start(默认值):向主轴方向的起始端靠齐;
  • flex-end:向主轴方向的结尾端靠齐;
  • center:向主轴中间靠齐;
  • space-between:两段靠齐,项之间间隔相等,主轴两段没有空隙;
  • space-around:项平均的分布在主轴上,每个项的两段都有空隙。

alignItems侧轴对齐方式:

alignItems属性用来设置伸缩项在侧轴上的对齐方式(侧轴永远垂直于主轴),有如下几种选项:

  • stretch(默认值):如果没有设置项的高度或设置为auto,则项将占满侧轴;
  • flex-start:向侧轴方向的起始端靠齐;
  • flex-end:向侧轴方向的末尾端靠齐;
  • center:向侧轴的中间靠齐。

flexWrap流式布局样式:

flexWrap属性用来设置流式布局(当所有项不能显示在一行中时,换行显示)的样式,有如下几种选项:

  • nowrap(默认值):不换行;
  • wrap:换行,新行在旧行下方;
  • wrap-reverse:换行,新行在旧行上方。

注意:flexWrap属性在iOS上可以正常设置,但在Android上如果不加额外的设置,则只会显示第一行,解决方法是添加style:alignItems: ’flex-start’

FlexBox元素属性

flex元素比重:

flex属性是flex-grow、flex-shrink和flex-basis三个属性的组合体,其中后两个属性是可选属性。三个属性具体解释如下:

  • flex-grow:元素占当前容器中的弹性宽度的比重,默认是0;
  • flex-shrink:缩小元素的宽度,值越大缩的越小,默认值是1;
  • flex-bisis:相当于CSS中的width属性,默认值是auto。

元素在容器中的宽度/高度的计算公式:宽/高度 = 弹性宽度 * (flow-grow / sum(flow-grow));

alignSelf

alignSelf属性允许单个元素有与其他元素不一样的对齐方式,有如下几种选项:

  • auto(默认值):集成父容器的对齐方式,如果没有父容器,则相当于stretch;
  • flex-start:当前元素向父容器的起始端靠齐;
  • flex-end:当前元素向父容器的结尾端靠齐;
  • center:当前元素向父容器的中间靠齐;
  • stretch:当前元素拉伸铺满父容器。

注意:alignSelf属性相当于将父容器的alignItems属性进行了覆盖。

FlexBox其他方法

获取当前屏幕的宽度(高度、分辨率使用同样方法获取):

let Dimensions = require('Dimensions');
let width = Dimensions.get('window').width;

获取当前屏幕的宽度、高度、分辨率:

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

补充参考

Flex布局教程 - 语法篇

Flex布局教程 - 实例篇

【RN - 基础】之FlexBox弹性布局的更多相关文章

  1. CSS3中的Flexbox弹性布局(一)

    CSS3引入了一种新的布局模式——Flexbox布局,即伸缩布局盒模型(Flexible Box),用来提供一个更加有效的方式制定.调整和分布一个容器里项目布局,即使它们的大小是未知或者动态的,这里简 ...

  2. css3 FlexBox 弹性布局

    Flex 弹性布局 这个是css3中新添加的内容,现在已经支持所有的浏览器,利用Flex布局,可以简便.完整.响应式地实现各种页面布局. 注意:在设置 flex 后,子元素的flaot ,clear, ...

  3. java基础之Flex弹性布局、JSP错误处理以及Log4J

    一.Flex弹性布局 1.产生的比较晚,目前在移动网页开发中可以使用,而且逐渐成为主流. 在桌面网页开发中使用的比较少(主要是桌面浏览器的兼容性问题更加严重) 2.开启方法: 在容器标签上加上 dis ...

  4. CSS3中的Flexbox弹性布局(二)

    flexbox详解 flexbox的出现是为了解决复杂的web布局,因为这种布局方式很灵活.容器的子元素可以任意方向进行排列.此属性目前处于非正式标准. flex布局模型不同于块和内联模型布局,块和内 ...

  5. Flexbox弹性布局

    Flexbox,一种CSS3的布局模式,也叫做弹性盒子模型,用来为盒装模型提供最大的灵活性.最新版本兼容IE11+.firefox.safari.chrome.opera及移动端,但移动端ios7.1 ...

  6. css flexbox 弹性布局

    flexbox 即css flexible box layout. ie9及以下不支持flexbox. flex详细规范(https://www.w3.org/TR/css-flexbox/) 为什么 ...

  7. Flexbox弹性布局,更优雅的布局

    Flexbox,更优雅的布局 Flex 布局教程:语法篇 Flex 布局教程:实例篇 2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得 ...

  8. CSS3 flexbox弹性布局实例

    常用例子 1.居中对齐 <!DOCTYPE html> <head> <meta charset="utf-8"> <style type ...

  9. React Native 弹性布局FlexBox

    React Native采用一中全新的布局方式:FlexBox(弹性布局).可以很方便的实现各种复杂布局,是全新的针对web和移动开发布局的一种实现方式. 何为FlexBox? 完整名称为:the f ...

随机推荐

  1. python基础-字典dict

    字典-dict 用途: 定义方法:通过{} 来存储数据,通过key:value (键值对)来存储数据,每个键值对通过逗号分隔.在键值对中,key 是不可变的数据类型,value 是任意数据类型 def ...

  2. AutoCad 二次开发 .net 之相同块的自动编号

    主要步骤: 一.获取一个块的id: 其中oId就是了. 二.通过次oId获取块引用blkRef: 三.通过它获取所有相同的块引用的id集合: 四.通过步骤三的集合得到所有的块引用得到集合listBr: ...

  3. python的基础认识

    一.python的简介    python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名 ...

  4. maven(1)

    Maven进价:Maven的生命周期阶段 一.Maven的生命周期 Maven的生命周期就是对所有的构建过程进行抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等 ...

  5. WPF CefSharp 爬虫

    1.实际需求          EMS邮件的自动分拣,要分拣首先需要获取邮件的面单号和邮寄地址,现在我们的快递一般都有纸质面单的,如果是直接使用图像识别技术从纸质面单中获取信息,这个开发的成本和实时性 ...

  6. echo -e的扩展应用之颜色控制输出(字体+背景)

    echo -e 输出带颜色字体或者背景用法:example: echo -e "\033[41;36m something here \033[0m" 其中41的位置代表底色, 3 ...

  7. T-SQL Part IV: ORDER BY

    ORDER BY 返回一个Cursor,并不返回结果集.而试图将Cursor作为输入将产生了错误. 所以,下列的SQL语句将产生错误: SELECT VerID, IsComplete VerID, ...

  8. Look into Bitmap images

    What's a Bitmap image? I'm not going to explain the differences between raster and vector images, no ...

  9. MathType转Word公式(OMML)

    背景 由于之前个人喜欢在Word里做笔记,而有很多笔记里存在着大量的公式.在早期,由于对Word自身的公式的不理解,所以便使用了MathType这个工具来编写公式.但是现在本人已经转战到LatTeX了 ...

  10. Head First设计模式——命令模式

    前言:命令模式我们平常可能会经常使用,如果我们不了解命令模式的结构和定义那么在使用的时候也不会将它对号入座. 举个例子:在winform开发的时候我们常常要用同一个界面来进行文件的下载,但是并不是所有 ...