React Native - FlexBox弹性盒模型

本文详细介绍了FlexBox布局的概念及其在解决浮动布局、屏幕适配等问题中的应用。文章讲解了FlexBox的基本思想,包括主轴和交叉轴的概念,并列举了常用的容器属性如flex-direction、justify-content等,以及元素属性如flex、align-self等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

内容概要:本文介绍了多种开发者工具及其对开发效率的提升作用。首先,介绍了两款集成开发环境(IDE):IntelliJ IDEA 以其智能代码补全、强大的调试工具和项目管理功能适用于Java开发者;VS Code 则凭借轻量级和多种编程语言的插件支持成为前端开发者的常用工具。其次,提到了基于 GPT-4 的智能代码生成工具 Cursor,它通过对话式编程显著提高了开发效率。接着,阐述了版本控制系统 Git 的重要性,包括记录代码修改、分支管理和协作功能。然后,介绍了 Postman 作为 API 全生命周期管理工具,可创建、测试和文档化 API,缩短前后端联调时间。再者,提到 SonarQube 这款代码质量管理工具,能自动扫描代码并检测潜在的质量问题。还介绍了 Docker 容器化工具,通过定义应用的运行环境和依赖,确保环境一致性。最后,提及了线上诊断工具 Arthas 和性能调优工具 JProfiler,分别用于生产环境排障和性能优化。 适合人群:所有希望提高开发效率的程序员,尤其是有一定开发经验的软件工程师和技术团队。 使用场景及目标:①选择合适的 IDE 提升编码速度和代码质量;②利用 AI 编程助手加快开发进程;③通过 Git 实现高效的版本控制和团队协作;④使用 Postman 管理 API 的全生命周期;⑤借助 SonarQube 提高代码质量;⑥采用 Docker 实现环境一致性;⑦运用 Arthas 和 JProfiler 进行线上诊断和性能调优。 阅读建议:根据个人或团队的需求选择适合的工具,深入理解每种工具的功能特点,并在实际开发中不断实践和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值