React Native - FlexBox弹性盒模型

FlexBox布局

1. 什么是FlexBox布局?

  弹性盒模型(The Flexible Box Module),又叫FlexBox,意为"弹性布局",旨在通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同屏幕,为盒模型提供最大的灵活性.
  Flex布局主要思想是: 让容器有能力让其子项目能够改变其宽度,高度(甚至是顺序), 以最佳方式填充可用空间;
  React Native中的FlexBox是这个规范的子集.

2. FlexBox在开发中的应用场景

2.1 FlexBox在布局中能够解决什么问题?

  • 浮动布局
  • 各种机型屏幕适配
  • 水平和垂直居中
  • 自动分配宽度
  • ... ...

2.2 在CSS中,常规的布局是基于块和内联流方向,而Flex布局是基于flex-flow流,稀土很好解释了Flex布局的思想:

762322-20170906103100069-1894833905.png

  容器默认存在两根轴: 水平的主轴(main axis)垂直的主轴(cross axis).主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end; 交叉轴的开始位置叫做cross start, 结束位置叫做cross end.
  项目默认沿主轴排列,单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size.

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

762322-20170906103124569-1666520543.png

3. FlexBox的常用属性

3.1 容器属性

  • flexDirection:
    row | row-reverse | column | column-reverse
    • 该属性决定主轴的方向(即项目的排列方向).
    • row : 主轴为水平方向,起点在左端
    • row-reverse : 主轴为垂直方向,起点在右端.
    • column(默认值) : 主轴为垂直方向,起点在上沿.
    • column-reverse : 主轴为垂直方向,起点在下沿.

762322-20170906103151788-109763726.png

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

762322-20170906103214694-338898540.png

  • alignItems: flex-start | flex-end | center | baseline | stretch
    • 定义项目在交叉轴上如何对齐, 可以把其想象成侧轴(垂直于主轴)的"对齐方式"
    • flex-start: 交叉轴的起点对齐
    • flex-end: 交叉轴的终点对齐
    • center: 交叉轴的重点对齐
    • baseline: 项目的第一行文字的基线对齐
    • stretch(默认值): 如果项目未设置高度或设为auto,将占满整个容器的高度

762322-20170906103249366-14559059.png

  • flexWrap: nowrap | wrap | wrap-reverse

    • 默认情况下,项目都排在一条线(又称"轴线")上. flex-wrap属性定义,如果一条轴线排不下,如何换行.762322-20170906103323851-778988453.png

    • nowrap(默认值): 不换行762322-20170906103351085-1214408504.png

    • wrap: 换行, 第一行在上方.762322-20170906103406929-1267324745.png

    • wrap-reverse: 换行,第一行在下方. (和wrap相反)762322-20170906103423304-1327913537.png

3.2 元素属性

  • flex
    • "flex-grow", "flex-shrink" 和 "flex-basis"三个属性的缩写, 其中第二个和第三个参数("flex-shrink" 和 "flex-basis")是可选参数.
    • 默认值为"0 1 auto".
    • 宽度 = 弹性宽度 * ( flexGrow / sum( flexGorw ) )
      762322-20170906103502147-472780756.png
  • alignSelf: "auto | flex-start | flex-end | center | baseline | stretch"
    • align-self属性允许单个项目有与其他项目不一样的对齐方式, 可覆盖align-item属性. 默认值为auto, 表示继承父元素的align-items属性,如果没有父元素, 则等同于stretch.
      762322-20170906103531304-995061677.png

4. 在React Native中使用Flexbox

4.1 获取当前屏幕的宽度,高度,分辨率

var Dimensions = require('Dimensions');export default class myApp extends Component {render() {return (<View style={styles.container}><View style={styles.innerView1}></View><View style={styles.innerView2}></View><View style={styles.innerView3}></View><Text>屏幕宽度是{Dimensions.get('window').width}</Text><Text>屏幕高度是{Dimensions.get('window').height}</Text><Text>屏幕分辨率是{Dimensions.get('window').scale}</Text></View>);}
}

762322-20170906103557741-910103095.png

感谢作者,原文地址,戳我

转载于:https://www.cnblogs.com/gchlcc/p/7483353.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java虚拟机读写其他进程的数据

在java中&#xff0c;process类提供了如下3个方法&#xff0c;用于让程序和其他子进程进行通信。 InputStream getErrorStream&#xff08;&#xff09;&#xff1a;获取子进程的错误流。 InputStream getInputStream&#xff08;&#xff09;&#xff1a;获取子进程的输入流。…

release8_如何在Windows 8 Release Preview中将Chrome用作Metro浏览器

release8Windows 8 allows third-party browser to replace Internet Explorer in the Metro environment — except on Windows RT. You can use Google Chrome in Metro today, and Firefox for Metro is on the way. Windows 8允许第三方浏览器在Metro环境中替换Internet Ex…

html jQuery/bootstrap通过网络bootcdn导入连接

网络连接网址 https://www.bootcdn.cn/ <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"utf-8"><title>title</title><!-- Bootstrap --><link href"https://cdn.bootcdn.net/ajax/libs/twi…

Python深入类和对象

一. 鸭子类型和多态 1.什么是鸭子类型&#xff1a; 在程序设计中&#xff0c;鸭子类型&#xff08;英语&#xff1a;Duck typing&#xff09;是动态类型和某些静态语言的一种对象推断风格。"鸭子类型"像多态一样工作&#xff0c;但是没有继承。“鸭子类型”的语言是这…

linux中/usr下文件权限修改setuid导致的问题

2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu系统中因为一些原因我使用如下命令修改了/usr目录的拥有者权限&#xff1a; chown -R root:root /usr结果直接导致系统无法正常启动&#xff0c;通过跟踪系统启动日志/var/log/syslog找到如下失败原因&#xff1…

[转载]unix环境高级编程备忘:理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID...

转载自http://www.cnblogs.com/stemon/p/5287631.html 一、基本概念 实际用户ID(RUID)&#xff1a;用于标识一个系统中用户是谁&#xff0c;一般是在登录之后&#xff0c;就被唯一的确定&#xff0c;就是登录的用户的uid。 有效用户ID(EUID)&#xff1a;用于系统决定用户对系统…

django20:BBS网页设计/注册功能/验证码代码

表设计 注册功能 """ 1.注册功能需要forms组件 不同功能&#xff0c;可单独一个py文件2.利用forms组件渲染前端标签1.利用ajax提交2.forms组件获取用户数据的数据。$(#form).serializeArray()获取forms标签所有用户普通键值对的数据3. 手动渲染头像label里面内…

用最少的代码打造一个Mini版的gRPC框架

在《用最少的代码模拟gRPC四种消息交换模式》中&#xff0c;我使用很简单的代码模拟了gRPC四种消息交换模式&#xff08;Unary、Client Streaming、Server Streaming和Duplex Streaming&#xff09;&#xff0c;现在我们更近一步&#xff0c;试着使用极简的方式打造一个gRPC框架…

Windows 10的下一个更新将在您观看视频时隐藏通知

Windows 10’s Focus Assist feature temporarily hides incoming notifications. In Windows 10’s next update, Focus Assist can activate when you’re using any full-screen app, whether that’s YouTube in a browser, Netflix, or a desktop video player like VLC. …

Ubuntu安装Samba文件共享服务器(NAS)

终于有点时间来解决下家中NAS需求了。一般自制NAS&#xff0c;只有选Samba。速度比FTP快&#xff0c;便利性比Windows文件夹共享好&#xff0c;设置多等等。 ▶参考&#xff1a;samba简介 安装Samba $ sudo apt-get update $ sudo apt-get install samba samba-common-bin 核心…

django21:admin后台管理\media配置\图片防盗链\暴露后端资源\路由分发\时间分类

admin后台管理 创建超级用户 createsuperuser 1.到应用下的admin.py注册模型表 from django.contrib import admin from blog import models # Register your models here.admin.site.register(models.UserInfo) admin.site.register(models.Article) admin.site.register(m…

Flask博客开发——Tinymce编辑器

之前Flask博客的文本编辑器比较简陋&#xff0c;这里为博客添加个优雅易用的Tinymce文本编辑器。 github见&#xff1a;https://github.com/ikheu/my_flasky 1 项目中添加Tinymce 下载好Tinymce包以及语言包&#xff0c;并添加到项目中。添加到项目的方法&#xff0c;参考了这篇…

Hello, Raspberry Pi.

1.概要最近在研究自动升级开源项目的时候偶然想到IoT领域的自动升级&#xff0c;突然想起2016年买的树莓派&#xff08;Raspberry Pi&#xff09;。那就分享一下如何入门树莓派的教程&#xff0c;我当时一共买了两块一款是Raspberry Pi 3b&#xff08;2016年价格259元去年以抽奖…

supersu_SuperSU已从Play商店中删除,这是替代使用的方法

supersuSuperSU has long been a staple in the rooted Android community. For years, the process for getting a rooted handset was: unlock the bootloader, flash a custom recovery, install SuperSU. That’s just how it was. 长期以来&#xff0c;SuperSU一直是扎根于…

django项目开发1:搭建虚拟环境

需求 不同项目依赖不同模块版本&#xff0c;不能共用一套环境&#xff0c;虚拟环境。在系统的python环境安装 安装 pip3 install virtualenv pip3 install virtualenvwrapper-win环境变量 # 配置环境变量&#xff1a; # 控制面板 > 系统和安全 > 系统 > 高级系统设…

div 包裹_如何查看到达之前收到的包裹和邮件

div 包裹The United States Postal Service, UPS, and FedEx all offer online dashboards where you can see exactly what packages (and letters, in the case of the US Postal Service) are scheduled to arrive at your address. They’ll even email and send you text …

py文件的运行

安装过程及配置 安装过程准备&#xff1a; 下载好Python的安装程序后&#xff0c;开始安装&#xff0c;在进入安装界面后一定确保勾选将Python加入到系统环境变量的路径里。如图所示&#xff1a; 2如果没有选取&#xff0c;那么按照下面的步骤进行操作。在桌面上用鼠标右键点击…

网络编程基础(一)

一.楔子 你现在已经学会了写python代码&#xff0c;假如你写了两个python文件a.py和b.py&#xff0c;分别去运行&#xff0c;你就会发现&#xff0c;这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据&#xff0c;你要怎么做呢&#xff1f; 这个问题以…

dotnet-exec 让 C# 程序更简单

dotnet-exec 让 C# 程序更简单Introdotnet-exec是一个可以执行 C# 程序而不需要项目文件的命令行工具&#xff0c;并且你可以指定自定义的入口方法不仅仅是Main方法在 python/NodeJs 里&#xff0c;可以使用python xx.py/node xx.js来运行代码&#xff0c;在 C# 中一般是需要项…

office数据集dslr_如何将照片从DSLR无线传输到智能手机

office数据集dslrYou’ve got a great digital camera. You’ve got all your social media apps on your phone. Wouldn’t it be nice if you could snap a beautiful shot with your DSLR and shuttle it right over to your phone to throw up on Facebook or Instagram? …