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

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

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

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

相关文章

树莓派命令行运行调用音频文件的函数,不报错,没有声音解决办法

树莓派接上音频首先需要切换音频不是HDMI,然后可以双击运行wav文件可以播放,但是: 命令行直接运行wav文件报错: Playing WAVE twzc.wav : Signed 16 bit Little Endian, Rate 16000 Hz, Mono命令行运行main方法也是无法播放&am…

用excel格式书写的接口用例执行脚本

创建测试用例和测试结果集文件夹: excel编写的接口测试用例如下: 1 encoding 响应的编码格式。所测项目大部分是utf-8,有一个特殊项目是utf-8-sig 2 params 对应requests的params 3 data,对应requests的data 有些参数是动态的&a…

java+springboot+mysql小区宠物管理系统

项目介绍: 使用javaspringbootmysql开发的小区宠物管理系统,系统包含超级管理员,系统管理员、用户角色,功能如下: 超级管理员:管理员管理;用户管理;宠物分类;宠物管理&…

自建机房还是选择云服务器?以腾讯云为例

大企业是选择自购服务器自建机房还是使用腾讯云服务器?都说企业上云是趋势,自建机房是一次性支出,上云租赁云服务器等产品需要年年续费,大型企业有必要把数据中心迁移上云吗?腾讯云服务器网想说,自建机房购…

28 玻尔兹曼机

文章目录 28 玻尔兹曼机28.1 模型定义28.2 梯度推导28.3 梯度上升28.4 基于VI[平均场理论]求解后验概率 28 玻尔兹曼机 28.1 模型定义 玻尔兹曼机是一张无向图,其中的隐节点和观测节点可以有任意连接如下图: 我们给其中的节点、连线做出一些定义&#…

软件功能测试有什么注意事项?功能测试报告起到什么作用?

软件功能测试是软件开发过程中至关重要的一环,它用于评估软件功能的质量和稳定性,并确保软件能够按照预期进行工作。然而,在进行功能测试时,有一些注意事项需要特别关注,以确保测试的准确性和有效性。 一、软件功能测…

c++继承总结

一 继承的由来 我使用类也有一段时间了,慢慢觉得我们做一件事时,就是要先描述,例如写一个管理系统登记学校成员的信息,我们就要先对在学校内的老师和学生做描述,学生要有年龄,班级,姓名&#xf…

使用C#加载TOOLBLOCK

前言 因为Vpp文件类型包含了以下三种 QuickBuidJobToolBlock 不同类型的打开方式不同,需要提前知道vpp是什么类型 例如 这个TB.vpp文件是TOOLBLOCK,就不能直接在visionpro中打开(直接打开需要QuickBuid文件), 可以…

在centos7下通过docker 安装onlyoffice

因为需要调试网盘,所以今天安装一下centos7的onlyoffice 官方介绍如下: 为了方便,还是通过docker方式来安装onlyoffice了,这里我们采用社区版本了。 1、下载docker安装包 如下: docker pull onlyoffice/documentserv…

uniapp 将标题背景更换背景图片 完美解决(附加源码+实现效果图)

问题描述 今天拿到小程序的设计效果图后,标题部分背景需要加背景图片,以往我做的都是标题背景更换颜色等,加背景图片还是第一次遇到,大家可以先看下我的效果图是否与你遇到的问题一致! 首页标题的背景是个背景图片。 …

构建高性能的MongoDB数据迁移工具:Java的开发实践

随着大数据时代的到来,数据迁移成为许多企业和组织必须面对的挑战之一。作为一种非关系型数据库,MongoDB在应用开发中得到了广泛的应用。为了满足数据迁移的需求,我们需要一个高性能、稳定可靠的MongoDB数据迁移工具。下面将分享使用Java开发…

Leetcode 977. 有序数组的平方

题目: Leetcode 977. 有序数组的平方 描述: 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序 思路: 双指针法 数组其实是有序的, 只不过负数平方之…

将vsCode 打开的多个文件分行(栏)排列,实现全部显示,便于切换文件

目录 1. 前言 2. 设置VsCode 多文件分行(栏)排列显示 1. 前言 主流编程IDE几乎都有排列切换选择所要查看的文件功能,如下为Visual Studio 2022的该功能界面: 图 1 图 2 当在Visual Studio 2022打开很多文件时,可以按照图1、图2所示找到自…

基于Selenium技术方案的爬虫入门实践

通过爬虫技术抓取网页,动态加载的数据或包含 JavaScript 的页面,需要使用一些特殊的技术和工具。以下是一些常用的技术方法: 使用浏览器模拟器:使用像 Selenium、PhantomJS 或其他类似工具可以模拟一个完整的浏览器环境&#xff0…

Redis实战案例27-UV统计

1. Redis的HyperLogLog的统计功能 示例: 表明HyperLogLog不管加入重复元素多少次都不会让count,不会计数重复元素,所以适合做UV计数 2. 简单实现UV测试 通过单元测试,向 HyperLogLog 中添加 100 万条数据,看看内存占…

python3.6 安装pillow失败

问题描述 python3 安装 pillow 失败 错误原因 python3.6 不支持 pillow9.0 以上的版本 解决方法: 指定版本安装 e.g., pillow8.0 pip3 install pillow8.0

看漫画学python!一天一个小惊喜有趣好用(全彩版)?

新手如何: 搭建Python开发环境 我们在Python官网可以下载Python安装包,在这个安装包里有Python解释器、Python运行所需要的基础库,以及交互式运行工具——Python 在下载完成后就可以安装Python了,在安装过程中会弹出内容选择对话…

水库大坝安全监测系统实施方案

一、方案概述 水库大坝作为特殊的建筑,其安全性质与房屋等建筑物完全不同,并且建造在地质构造复杂、岩土特性不均匀的地基上,目前对于大坝监测多采用人工巡查的方法,存在一定的系统误差,其工作性态和安全状况随时都在变…

怎么学习机械学习相关的技术? - 易智编译EaseEditing

学习DOM(文档对象模型)相关技术是成为前端开发者的关键一步,因为DOM是用于操作和控制网页内容的基础。以下是学习DOM相关技术的步骤和方法: 了解基础知识: 首先,了解什么是DOM,它如何表示HTML…

刘汉清:从生活到画布,宠物成为灵感源泉

出生于中国镇江的艺术家刘汉清,其作品展现出他对日常生活的深入洞察力,以及对美的独特理解。他的作品通常没有视觉参考,而是通过对他周围环境的理解,尤其是他的宠物,来进行创作。 在刘汉清的创作过程中,他…