React Native 之布局篇

一.Flex布局

什么是Flex布局?布局的传统解决方案,是基于盒子模型,依赖display属性+position属性+float属性,这种布局方式对于特殊布局非常不方便,

比如,垂直居中就不好实现.2009年,W3c提出的Flex布局,即弹性布局,用来为盒子模型提供最大的灵活性,任何一个容器都可以指定为Flex布局.

1.容器的属性(6个)

ReatNative的flex布局和web的略有不同,下面的这些属性在RN中不用写中间”-“,并且第二个单词 首字母大写

flex-direction:子项目的在主轴的排列方式

  row (默认值):主轴为水平方向,起点在左端

  row-reverse:主轴为水平方向,起点在右端(RN似乎不支持)

  column:主轴为垂直方向,起点在上沿

  column-reverse:主轴为垂直方向,起点在下沿(RN也不支持)

  flex-wrap:默认,项目都排在一条线上(又称”轴线”)上

  nowrap 不换行 (默认)| wrap换行 | wrap-reverse 换行,第一行在下方

  RN似乎也不支持

  flex-flow:属性是flex-direction和flex-wrap的简写形式,默认是row nowrap,RN没试过

  justify-content:定义项目在主轴上的对齐方式

  flex-start(默认值) 左对齐 | flex-end (右对齐) | center(居中) | space-between (两端对齐,项目之间间

  隔相等) | space-around (每个项目两侧的间隔相等,所以项目之间的间隔比项目与边框的间隔大一倍)

  align-items:定义项目在交叉轴上如何对齐

  flex-start (交叉轴的起点) | flex-end (终点) | center(中点对齐) | baseline(项目的第一行文字的基线对齐) | stretch (默认值)如果项目

  未设置高度 或者设为auto,将占满整个容器

  align-content:定义了多根轴线的对齐方式,如果项目只有一根轴线,该属性不起作用

  flex-start | flex-end | center | space-between | space-around

    
3.项目的属性(6个)

  order:定义项目的排列顺序,数值越小,排列越靠前,默认为0

  flex-grow:定义项目的放大比例,默认为0,即如果存在剩余空间也不放大,如果都为1,则他们将等分剩余空间.如果一个为2,其他为1,则前

  者占据的剩余空间比其他多一倍

  flex-shrink:定义项目的缩小比例,默认为1,即如果空间不足,项目将缩小.如果都为1,等比缩小,如果一个为0,其他为1,则前者不缩小,负值

  无效

  flex-basis:定义在分配多余空间之前,项目占据的主轴空间,浏览器将根据这个属性,计算主轴是否有多余空间,它的默认值为auto,即项目

  本来大小,也可以设置固定空间,即width和height

  flex:是flex-grow,flex-shrink,flex-basis的简写,默认为0 1 auto ,后两个属性可选,该属性有快捷值,auto (1 1 auto) 和none (0 0 auto)

  align-self:允许单个项目与其他项目不一样的对齐方式,可覆盖align-items 属性,默认值为auto,表示继承父元素的align-items属性,没

  有父元素则等同于stretch

  auto | flex-start | flex-end | center | baseline | stretch

  图片的属性:

  resizeMode

  cover:cover会被截断

  strech:stretch模式图片被拉伸适应屏幕

  contain:contain 模式容器完全容纳图片,图片自适应宽高

4.绝对定位与相对定位

不用在父容器中设置absolute或者relative,直接是相对于父容器定位

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native弹性布局是一种基于Flexbox布局模型的布局方式,它可以让你更轻松地创建具有弹性的用户界面。Flexbox是一种用于在屏幕上分配空间的CSS3布局模型,它可以将一个容器的子元素沿着一个主轴和交叉轴进行对齐和排列。在React Native,弹性布局可以让你使用一系列简单的布局属性来指定容器的子元素如何进行布局。 具体而言,React Native弹性布局有以下常用属性: - `flex`:定义一个元素的伸缩能力,默认值为0,即不伸缩。 - `flexDirection`:定义元素在容器的排列方向,可选值包括`row`(水平方向)、`column`(竖直方向)、`row-reverse`(反向水平方向)和`column-reverse`(反向竖直方向)。 - `justifyContent`:定义元素在主轴上的对齐方式,可选值包括`flex-start`、`center`、`flex-end`、`space-between`(两端对齐)和`space-around`(各个元素之间留有空隙)。 - `alignItems`:定义元素在交叉轴上的对齐方式,可选值包括`flex-start`、`center`、`flex-end`、`stretch`(默认值,拉伸元素以填充交叉轴)和`baseline`(让元素按照它们的基线对齐)。 下面是一个使用弹性布局实现水平居和竖直居的例子: ```javascript import React from 'react'; import { View, StyleSheet } from 'react-native'; const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', alignItems: 'center', }, box: { width: 100, height: 100, backgroundColor: 'red', }, }); const App = () => { return ( <View style={styles.container}> <View style={styles.box} /> </View> ); }; export default App; ``` 这里的`container`使用了弹性布局,并且使用了`justifyContent`和`alignItems`来实现水平和竖直居
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值