React Native 样式布局基础知识

通过此篇笔记能够学习到如下的几个知识点

  • 在 React Native 中使用样式的一些细节
  • 了解 React Native 的 Flex 布局概念
  • 了解 React Native 的 flex 布局属性
  • React Native 如何添加多样式属性
  • React Native 中绝对布局和相对布局

React Native 中的 Flex 布局概念

1、主轴和交叉轴

在 Flex 布局中存在主轴和交叉轴的概念,主轴和交叉轴的关系如同 X 轴和 Y 轴的关系。在 Flex 布局中是使用 flexDirection 来定义主轴和交叉轴的方向。

  • flexDirection: row | row-reverse | column | column-reverse

当 flexDirection 的值为row或者row-reverse时,主轴和交叉轴的关系如下图:
在这里插入图片描述
当 flexDirection 的值为 column或者 column-reverse时,主轴和交叉轴的关系如下图:
在这里插入图片描述

2、x-reverse 属性说明

当 flexDirection 的属性值为row-reverse时,元素的排列表顺序是从右到左的顺序依次排序。

当 flexDirection 的属性值为column-reverse时,元素的排列表顺序是从下到上的顺序依次排序。

Flex 容器对齐方式

Flex 容器中的元素对齐是跟主轴和交叉轴有关。其中 alignItems 属性主要是在交叉轴上对齐,而 justifyContent 属性主要是在主轴上对齐。

  • justifyContent 控制主轴(横轴)上所有 flex 项目的对齐。(以下实例都是按照flexDirection: 'row'为基础来设置参数)

    • flex-start flex 项目的开始端的对齐

    具体布局实例如下:
    在这里插入图片描述

    • flex-end flex 项目的结束端对齐

    具体布局实例如下:
    在这里插入图片描述

    • center flex 项目居中对齐

    具体布局实例如下:
    在这里插入图片描述

    • space-between flex 项目两端对齐且项目间隔均等(左右两端无空隙)

    具体布局实例如下:

在这里插入图片描述

  • space-around flex 项目间隔均等分

具体布局实例如下:
在这里插入图片描述

  • space-evenly flex 项目间隔均等分,此属性与 space-around 的不同之处是在于,此值是所有空间都是均等的,而 spance-around 左右两端并不是空间均等而是元素的一半

具体布局实例如下:
在这里插入图片描述

  • alignItems 控制交叉轴(纵轴)上所有 flex 项目的对齐。(以下实例都是按照flexDirection: 'column'为基础来设置参数)

    基础样式代码:

     container: {
      flexDirection: 'column',
      alignItems: ''
    },
    card: {
      height: 100,
      marginHorizontal: 8,
      borderRadius: 5,
      justifyContent: 'center',
      alignItems: 'center',
    },
    cardOne: {
      width: 100,
      backgroundColor: '#EF5354'
    },
    cardTwo: {
      width: 100,
      backgroundColor: '#50DBB4'
    },
    cardThree: {
      width: 'auto',
      backgroundColor: '#5DA3FA'
    },
    textWhite: {
      color: '#FFFFFF'
    }
    
    • flex-start flex 项目的开始端的对齐

    具体布局实例如下:
    在这里插入图片描述

    • flex-end flex 项目的结束端对齐

    具体布局实例如下:
    在这里插入图片描述

    • center flex 项目居中对齐

    具体布局实例如下:
    在这里插入图片描述

    • stretch flex 项目撑满 flex 容器,当元素设置了高度后,元素的高度只会按照设置的高度来
      在这里插入图片描述
    • baseline flex 项目的基线对齐

    具体布局实例如下:
    在这里插入图片描述

  • alignSelf 控制交叉轴(纵轴)上的单个 flex 项目的对齐。此属性设置在子元素上才会有效果。属性值跟 align-items 一样。

  • alignContent 控制“多条主轴”的 flex 项目在交叉轴的对齐。属性值与 justifyContent 一样。

Flex 容器排序设置

  • flexWrap:设置 Flex 容器的子元素总宽度大于 Flex 容器的宽度时子元素的呈现方式。取值有 nowrapwrapwrap-reverse

    • nowrap 当子元素总宽度超出时溢出容器
    • wrap 当子元素总宽度超出时元素会折行并且从左到右排序,具体实例如下:
      在这里插入图片描述

Flex 子元素大小设置

  • flexGrow:设置子元素所占容器的比例

    等分所有元素实例:

    container: {
      flexDirection: 'row'
    },
    card: {
      flexGrow: 1,
      height: 100,
      margin: 8,
      borderRadius: 5,
      justifyContent: 'center',
      alignItems: 'center',
    },
    

    12 栏切分为 3、3、6 的比例:

    container: {
      flexDirection: 'row'
    },
    card: {
      height: 100,
      margin: 8,
      borderRadius: 5,
      justifyContent: 'center',
      alignItems: 'center',
    },
    
  • flexBasis:为元素设置最小宽度,当父子元素都设置了此属性,子元素的优先级最高。

    为元素设置最小宽度为 60:

    card: {
      height: 100,
      margin: 8,
      flexBasis: 60,
      borderRadius: 5,
      justifyContent: 'center',
      alignItems: 'center',
    },
    
  • flexShrink:元素的收缩比例,数值越大的话,收缩的比例越大。具体实例如下:

    card: {
      height: 100,
      margin: 8,
      borderRadius: 5,
      justifyContent: 'center',
      alignItems: 'center',
    },
    cardOne: {
      flexBasis: 'auto',
      backgroundColor: '#EF5354',
      flexShrink: 0
    },
    cardTwo: {
      flexBasis: 300,
      backgroundColor: '#50DBB4',
      flexShrink: 13
    },
    cardThree: {
      flexBasis: 300,
      backgroundColor: '#5DA3FA',
      flexShrink: 55
    },
    

Flex 行间距和列间距

在 Flex 中间距的设置主要是通过如下三个属性来设置:

  • rowGap 设置元素行之间的间隙
  • columnGap 设置元素列之间的间隙
  • gap 设置元素行/列之间的间隙

具体实例如下:

container: {
  flexDirection: 'row',
  rowGap: 8,
  columnGap: 8
},
card: {
  flex: 1,
  height: 100,
  borderRadius: 5,
  justifyContent: 'center',
  alignItems: 'center',

},
cardOne: {
  backgroundColor: '#EF5354',
},
cardTwo: {
  backgroundColor: '#50DBB4',
},
cardThree: {
  backgroundColor: '#5DA3FA',
},

绝对定位和相对定位

position 属性类型定义了它在其父元素中的定位方式。

  • relative(默认值)默认情况下,元素是相对定位的。top 这意味着元素根据布局的正常流程定位,然后根据、right、bottom 和的值相对于该位置进行偏移 left。偏移量不会影响任何同级或父元素的位置。具体实例如下:
card: {
  width: 100,
  height: 100,
  borderRadius: 5,
  justifyContent: 'center',
  alignItems: 'center',
},
cardOne: {
  backgroundColor: '#EF5354',
  top: 20,
  left: 20
},
cardTwo: {
  backgroundColor: '#50DBB4',
  top: 20,
  left: 40
},
cardThree: {
  backgroundColor: '#5DA3FA',
  top: 20,
  left: 60
},
textWhite: {
  color: '#FFFFFF'
}

运行效果如下:
在这里插入图片描述

  • absolute 当绝对定位时,元素不会参与正常的布局流程。相反,它的布局独立于其兄弟姐妹。该位置是根据 top、right、bottom 和 left 值确定的。具体实例如下:
cardOne: {
  backgroundColor: '#EF5354',
  position: 'absolute',
  top: 20,
  left: 20
},
cardTwo: {
  backgroundColor: '#50DBB4',
  position: 'absolute',
  top: 30,
  left: 40
},
cardThree: {
  backgroundColor: '#5DA3FA',
  position: 'absolute',
  top: 40,
  left: 60
},

具体效果如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蜜蜂路线 P2437

蜜蜂路线 题目背景 无 题目描述 一只蜜蜂在下图所示的数字蜂房上爬动,已知它只能从标号小的蜂房爬到标号大的相邻蜂房,现在问你&#xff1a;蜜蜂从蜂房 m 开始爬到蜂房 n&#xff0c;m<n&#xff0c;有多少种爬行路线&#xff1f;&#xff08;备注&#xff1a;题面有误&…

插入、希尔、归并、快速排序(java实现)

目录 插入排序 希尔排序 归并排序 快速排序 插入排序 排序原理&#xff1a; 1.把所有元素分为两组&#xff0c;第一组是有序已经排好的&#xff0c;第二组是乱序未排序。 2.将未排序一组的第一个元素作为插入元素&#xff0c;倒序与有序组比较。 3.在有序组中找到比插入…

Map中compute、putIfAbsent、computeIfAbsent、merge、computeIfPresent使用

目录 putIfAbsent computeIfAbsent computeIfPresent compute merge putIfAbsent 解释&#xff1a;【不存在则添加】&#xff0c;如果map中没有该key&#xff0c;则直接添加&#xff1b;如果map中已经存在该key&#xff0c;则value保持不变 default V putIfAbsent(K key,…

Vue3 第四节 自定义hook函数以及组合式API

1.自定义hook函数 2.toRef和toRefs 3.shallowRef和shallowReactive 4.readonly和shallowReadonly 5.toRaw和markRaw 6.customref 一.自定义hook函数 ① 本质是一个函数&#xff0c;把setup函数中使用的Composition API 进行了封装,类似于vue2.x中的mixin 自定义hook函数…

从MySQL到金蝶云星空通过接口配置打通数据

从MySQL到金蝶云星空通过接口配置打通数据 对接系统&#xff1a;MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQLAB公司开发&#xff0c;属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在WEB应用方面&#xff0c;MySQL是最好的RDBMS…

HCIP 链路聚合技术

1、链路聚合概述 为了保证网络的稳定性&#xff0c;仅仅是设备进行备份还不够&#xff0c;我们需要针对我们的链路进行备份&#xff0c;同时也增加了链路的利用率&#xff0c;提高带宽。避免一条链路出现故障&#xff0c;导致网络无法正常通信。这就可以使用链路聚合技术。 以…

Uniapp使用腾讯地图并进行标点创建和设置保姆教程

使用Uniapp内置地图 首先我们需要创建一个uniapp项目 首先我们需要创建一个uniapp项目 我们在HBuilder左上角点击文件新建创建一个项目 然后下面这张图的话就是uniapp创建项目过程当中需要注意的一些点和具体的操作 然后我们创建完项目之后进入到项目pages文件夹下&#xff…

AP51656 电流采样降压恒流驱动IC RGB PWM深度调光 LED电源驱动

产品描述 AP51656是一款连续电感电流导通模式的降压恒流源&#xff0c;用于驱动一颗或多颗串联LED 输入电压范围从 5 V 到 60V&#xff0c;输出电流 可达 1.5A 。根据不同的输入电压和 外部器件&#xff0c; 可以驱动高达数十瓦的 LED。 内置功率开关&#xff0c;采用电流采样…

Redis——常见数据结构与单线程模型

Redis中的数据结构 Redis中所有的数据都是基于key&#xff0c;value实现的&#xff0c;这里的数据结构指的是value有不同的类型。 当前版本Redis支持10种数据类型&#xff0c;下面介绍常用的五种数据类型 底层编码 Redis在实现上述数据结构时&#xff0c;会在源码有特定的…

成像镜头均匀性校正——360°超广角均匀校准光源

随着空间技术的不断发展&#xff0c;遥感仪器在对地观测、大气探测及海洋探测等方面的应用也不断拓展&#xff0c;以实现不同任务的观测精度。空间遥感仪器热控技术旨在保证遥感器各部件所需温度水平、温度梯度和温度稳定度&#xff0c;以满足遥感器高质量成像要求。 近年来我国…

动手学DL——MLP多层感知机【深度学习】【PyTorch】

文章目录 4、多层感知机&#xff08; MLP&#xff09;4.1、多层感知机4.1.1、隐层4.1.2、激活函数 σ 4.2、从零实现多层感知机4.3、简单实现多层感知机4.4、模型选择、欠拟合、过拟合4.5、权重衰退4.6、丢失法|暂退法&#xff08;Dropout&#xff09;4.6.1、dropout 函数实现4…

策略模式实战应用

场景 假设做了个卖课网站&#xff0c;会员等级分为月vip、年vip、终生vip&#xff0c;每个等级买课的优惠力度不一样&#xff0c;传统的写法肯定是一堆的 if-else&#xff0c;现在使用策略模式写出代码实现 代码实现 策略模式的核心思想就是对扩展开放&#xff0c;对修改关闭…

C# Linq源码分析之Take方法

概要 Take方法作为IEnumerable的扩展方法&#xff0c;具体对应两个重载方法。本文主要分析第一个接收整数参数的重载方法。 源码解析 Take方法的基本定义 public static System.Collections.Generic.IEnumerable Take (this System.Collections.Generic.IEnumerable source…

2023杭电多校第8场E题-0 vs 1

题目链接&#xff1a;http://csoj.scnu.edu.cn/contest/102/problem/1005 解题思路&#xff1a; 代码如下&#xff1a; #include<iostream> #include<math.h> #include<algorithm> using namespace std; const int N 1e5 10;int s[N], l, r; int now;int…

c++11 标准模板(STL)(std::basic_fstream)(五)

定义于头文件 <fstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_fstream : public std::basic_iostream<CharT, Traits> 类模板 basic_fstream 实现基于文件的流上的高层输入/输出。它将 std::basic_i…

【Vue】使用print.js插件实现打印预览功能,超简单

目录 一、实现效果 二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div&#xff0c;给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码 一、实现效果 二、实现步…

【非欧几里得域信号的信号处理】使用经典信号处理和图信号处理在一维和二维欧几里得域信号上应用低通滤波器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Spring与Spring Bean

Spring 原理 它是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring 仍然可 以和其他的框架无缝整合。 Spring 特点 轻量级 控制反转 面向切面 容器 框架集合 Spring 核心组件 Spring 总共有十几个组件核心容器(Spring core) S…

RN 使用react-navigation写可以滚动的横向导航条(expo项目)

装包&#xff1a; yarn add react-navigation/material-top-tabs react-native-tab-view npx expo install react-native-pager-view import React from react import { View, Text, ScrollView, SafeAreaView } from react-native import { Icon } from ../../../../../compo…

python编辑器安装与配置,python用哪个编辑器好用

大家好&#xff0c;给大家分享一下python编辑器pycharm安装教程&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 哪些python的编程软件值得推荐&#xff1f; 编写python源代码的软件.首推的Pycharm。 PyCharm用于bai一般IDE具备的功能&…