当前位置: 首页 > news >正文

HarmonyOS Flex布局

在这里插入图片描述

前置知识:

  • 一次开发,多端部署:一套代码工程,一次开发上架,多端按需部署。支撑开发者快速高效的开发支持多种终端设备形态的应用,实现对不同设备兼容的同时,提供跨设备的流转、迁移和协同的分布式体验
  • 自适应布局:当外部容器大小发生变化时,元素可以根据相对关系自动变化以适应外部容器变化的布局能力。相对关系如占比、固定宽高比、显示优先级等。常见的自适应布局有:线性布局、层叠布局、弹性布局、相对布局等。自适应布局能力可以实现界面显示随外部容器大小连续变化
  • 响应式布局:当外部容器大小发生变化时,元素可以根据断点、栅格或特定的特征(如屏幕方向、窗口宽高等)自动变化以适应外部容器变化的布局能力。
  • Navigation:页面根容器,一般用于分栏布局场景使用。

Flex布局:
提供了更加灵活和有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。广泛应用于页面头部导航栏的均匀分布、页面框架的搭建、多行数据的排列等场景

  1. 主轴和交叉轴
    1. 主轴:Flex布局的主轴是水平方向(默认)或垂直方向(通过设置方向),子元素默认沿主轴排列
    2. 交叉轴:垂直于主轴的轴线,用于设置子元素在交叉轴方向的对齐方式
  2. 布局方向
    1. 默认方向:主轴为水平方向(FlexDirection.Row),子元素从起始端沿着水平方向开始排布
    2. 其他方向:可以通过设置方向参数(如FlexDirection.RowReverse、FlexDirection.Column、FlexDirection.ColumnReverse)来改变主轴方向
  3. 布局换行
    1. 单行布局:子元素在主轴方向上的尺寸之和小于容器的主轴尺寸时,所有子元素在同一行排列
    2. 多行布局:子元素在主轴方向上的尺寸之和大于容器的主轴尺寸时,容器会换行,每一行子元素按照主轴方向排列
    3. wrap属性:控制多行布局时的换行方式,包括FlexWrap.NoWrap(默认值)、FlexWrap.Wrap和FlexWrap.WrapReverse
  4. 主轴对齐方式
    1. 对齐方式:可以通过justifyContent参数设置子元素在主轴方向上的对齐方式,包括FlexAlign.Start、FlexAlign.Center、FlexAlign.End和FlexAlign.SpaceBetween等
  5. 交叉轴对齐方式
    1. 对齐方式:可以通过alignItems参数设置子元素在交叉轴方向上的对齐方式,包括ItemAlign.Auto、ItemAlign.Start、ItemAlign.Center、ItemAlign.End、ItemAlign.Stretch、ItemAlign.Baseline和ItemAlign.End
  6. 自适应拉伸
    1. 通过设置子元素的flexBasisflexGrow属性,可以实现子元素的自适应布局 flexBasis设置子元素在主轴方向上的基准尺寸,flexGrow设置子元素在主轴方向上分配剩余空间的比例。flexShrink:设置子元素在主轴方向上压缩的比例

建议使用Column/Row替代Flex,性能会得到提升

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【博客搭建 第二篇章】项目中怎么引入其他的 icon
  • NLP——Transfromer 架构详解
  • HarmonyOS鸿蒙应用开发之Text组件的使用
  • gogs的安装和使用(docker)
  • [Bugku] web-CTF靶场系列系列详解⑥!!!
  • Leetcode每日刷题之75. 颜色分类(C++)
  • 搭建AI知识库:打造坚实的团队知识堡垒
  • MySQL —— CRUD
  • LeetCode——3143. 正方形中的最多点数
  • Qt Creator卡顿
  • python开发上位机 - PyCharm环境搭建、安装PyQt5及工具
  • k8s中yaml文件的编写
  • mysql 监控开始时间,结束时间,平均取n个时间点
  • Android 14适配记录
  • 智能爬虫ScrapeGraphAI尝鲜
  • java中的hashCode
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Lsb图片隐写
  • Python语法速览与机器学习开发环境搭建
  • Rancher-k8s加速安装文档
  • Vue 重置组件到初始状态
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Yii源码解读-服务定位器(Service Locator)
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端之React实战:创建跨平台的项目架构
  • 手机端车牌号码键盘的vue组件
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 我的zsh配置, 2019最新方案
  • 我感觉这是史上最牛的防sql注入方法类
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #git 撤消对文件的更改
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (ros//EnvironmentVariables)ros环境变量
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (一)为什么要选择C++
  • (转)LINQ之路
  • (转)重识new
  • ***检测工具之RKHunter AIDE
  • ***通过什么方式***网吧
  • .NET Core引入性能分析引导优化
  • .NET Micro Framework 4.2 beta 源码探析
  • .Net Winform开发笔记(一)
  • .NET和.COM和.CN域名区别
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @NotNull、@NotEmpty 和 @NotBlank 区别
  • [ Linux ] Linux信号概述 信号的产生