React Native 样式布局基础知识

news2024/11/24 1:22:34

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

  • 在 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
},

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

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

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

相关文章

06-1_Qt 5.9 C++开发指南_对话框与多窗体设计_标准对话框

在一个完整的应用程序设计中,不可避免地会涉及多个窗体、对话框的设计和调用,如何设计和调用这些对话框和窗体是搞清楚一个庞大的应用程序设计的基础。本章将介绍对话框和多窗体设计、调用方式、数据传递等问题,主要包括以下几点。 Qt 提供的…

JavaWeb 速通Cookie

目录 一、关于base标签 1.引入 : 2.介绍 : 3.实例 : 4.细节 : 二、Cookie的引入 1.会话技术 : 1 什么是会话技术? 2 会话技术用于解决什么问题? 2.Cookie介绍 1 Cookie有什么用? 2 Cookie通讯机制 三、Cookie的基本使用 1.创建Cookie…

【数据结构】带你图文结合深入栈和队列,并具体分步实现

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我们继续来学习初阶数据结构的内容,今天我们要讲的是栈与队列部分的内容,这篇博客先讲栈,队列我们放到下次再讲 好了,废…

看完秒懂:5G技术会给视频监控行业带来怎样的变革?

5G是第五代移动通信技术,能够提供更高的带宽和更快的传输速度,这将为视频技术的发展带来大量机会。随着5G技术的逐步普及与商用,人们将能够享受到更加流畅的高清视频体验,并且5G技术还拥有更低的延迟和更高的网络容量。这些优势不…

(树) 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 ——【Leetcode每日一题】

❓剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 难度:简单 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科 中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满…

分清性能测试,负载测试,压力测试这三个的区别

做测试一年多来,虽然平时的工作都能很好的完成,但最近突然发现自己在关于测试的整体知识体系上面的了解很是欠缺,所以,在工作之余也做了一些测试方面的知识的补充。不足之处,还请大家多多交流,互相学习。 …

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

装包: 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…

ElastAlert通过飞书机器人发送报警通知

前言 公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~ 于是痛定思痛,决定主动出击,…

【刷题笔记8.8】两数之和

LeetCode(Hot100):两个数之和 题目描述及示例: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会…

学成在线踩坑

这段时间在做学成在线的过程中,偷懒遇到了一个这个问题,这个问题是直接跑老师的程序出现的,配置文件方面并没有出其他情况,找了半天,没找到错误。最后因为分析可能是MediaFileServiceImpl.java这个代码出了问题&#x…

Spring高手之路12——BeanDefinitionRegistry与BeanDefinition合并解析

文章目录 1. 什么是BeanDefinitionRegistry?2. BeanDefinitionRegistry 的使用2.1 BeanDefinitionRegistry 简单例子2.2 有关ImportBeanDefinitionRegistrar的实现类的例子 3. BeanDefinition的合并3.1 调试验证BeanDefinition的合并3.2 BeanDefinition合并的目的 4…

怎么在JMeter中的实现关联

我们一直用的phpwind这个系统做为演示系统, 如果没有配置好的同学, 请快速配置之后接着往下看哦. phpwind发贴时由于随着登陆用户的改变, verifycode是动态变化的, 因此需要用到关联. LoadRunner的关联函数是reg_save_param, Jmeter的关联则是利用后置处理器来完成. 在需要查…

jpa Page 1 of 0 containing UNKNOWN instances错误关于like问题的解决记录

导致这个问题的原因很多,这里记录一下我碰到的问题和解决方法。 网上有说时 pageNo要从0开始,我的不是这个问题。 在使用springboot jpa时,发现使用 t.ip like %?5% 语句,如果数据库记录的ip is null时,将查询不到该…

【网络】应用层——HTTPS协议

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! HTTPS协议 🍉HTTP的不安全性🍉认识HTTPS协议🍓加密解密&#x1f35…

露营,「迷失」在春风里

【潮汐商业评论/原创】 “周末一起去露营吧?”Susan向闺蜜发起邀请。 Susan闺蜜看到后连忙说“去多了感觉没意思,还不如去隔壁城市走走呢?”两人一拍即合,便研究起了攻略。 Susan疑惑,好像露营也没火多久&#xff0…

【Linux】-- 进程间通信

目录 一、进程间通信介绍 二、管道 1.什么是管道(pipe) 2.重定向和管道 (1)为什么要有管道的存在 (2)重定向和管道的区别 3.匿名管道 (1)匿名管道原理 (2&…

springAOP的实例

文章目录 前言一.用户登录权限校验1.1 spring 拦截器1.2 传统的用户登录权限验证1.3 使用拦截器的方式1.4 案例1.5 拦截器实现原理 三.统一异常处理3.1 什么是统一异常处理3.2 具体步骤 四.统⼀数据返回格式4.1 为什么需要统一的数据返回4.2 统一返回数据的格式4.3 统一移除处理…

瞅一眼nginx

目录 🦬什么是nginx? 🦬nginx配置官方yum源: 🦬nginx优点 🦬nginx 缺点 🦬查看nginx默认模块 🐌nginx新版本的配置文件: 🐌nginx目录索引 🐌nginx状态…

Attacks in NLP

一、 Introduction NLP对抗攻击是人工智能对抗攻击的一个重要的组成部分,但是最近几年才逐渐开始兴起,究其原因在于NLP对抗攻击与传统computer vision或者audio对抗攻击有很大的不同,主要在于值空间的连续性(CV、audio&#xff0…