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

HarmonyOS:弹性布局(Flex)

学习目标

        掌握弹性布局的基本概念、核心属性及其在实际开发中的应用,能够熟练使用 Flex 实现常见页面布局。

一、弹性布局概述

        弹性布局(Flex)是一种高效的容器布局方式,用于对子元素进行排列、对齐和空间分配
适用于:导航栏均分、页面框架搭建、多行数据排布等响应式场景。

核心思想:通过主轴与交叉轴控制子元素的排列方向与对齐方式。

二、基本概念图解

主轴与交叉轴关系示意图

概念含义说明
主轴 (Main Axis)子元素排列的方向轴(由 direction 决定)
主轴起始/结束点子元素开始/结束排列的位置
交叉轴 (Cross Axis)垂直于主轴的轴线
交叉轴起始/结束点交叉轴上的起点和终点

📌 默认主轴为水平方向(Row),交叉轴为垂直方向。

三、布局方向(direction)

方向描述示例代码
FlexDirection.Row(默认)水平从左到右Flex({ direction: FlexDirection.Row })
FlexDirection.RowReverse水平从右到左Flex({ direction: FlexDirection.RowReverse })
FlexDirection.Column垂直从上到下Flex({ direction: FlexDirection.Column })
FlexDirection.ColumnReverse垂直从下到上Flex({ direction: FlexDirection.ColumnReverse })

可视化对比图

四、换行设置(wrap)

属性值行为描述
FlexWrap.NoWrap(默认)不换行,子元素压缩宽度
FlexWrap.Wrap换行,新行沿交叉轴正方向排列
FlexWrap.WrapReverse换行,新行沿交叉轴反方向排列

⚠️ 多行布局时才体现 alignContent 的作用。

五、主轴对齐方式(justifyContent)

对齐方式效果说明公式示意
FlexAlign.Start(默认)起始端对齐——
FlexAlign.Center居中对齐——
FlexAlign.End终点端对齐——
FlexAlign.SpaceBetween两端对齐,间距相等首尾贴边,中间等距
FlexAlign.SpaceAround间隔环绕边距 = 半间距
FlexAlign.SpaceEvenly完全等距所有间距相同

六、交叉轴对齐方式

6.1 容器级对齐(alignItems)

属性值说明
ItemAlign.Auto使用默认配置
ItemAlign.Start顶部对齐
ItemAlign.Center居中对齐
ItemAlign.End底部对齐
ItemAlign.Stretch拉伸填满(无高度时生效)
ItemAlign.Baseline文本基线对齐

6.2 子元素级对齐(alignSelf)

  • 优先级高于 alignItems

  • 单个子元素可覆盖父容器设定

Flex({ alignItems: ItemAlign.Center }) {Text('顶部').alignSelf(ItemAlign.Start) // 覆盖居中 → 顶部
}

七、多行内容对齐(alignContent)

仅在 wrap 换行时有效,控制多行之间的垂直分布。

alignContent 值效果
Start多行靠上对齐
Center多行居中
End多行靠下
SpaceBetween上下行贴边,中间等距
SpaceAround行间距为边距两倍
SpaceEvenly所有间距完全相等

八、自适应拉伸属性

8.1 flexBasis:主轴基准尺寸

  • 相当于“初始宽度”

  • 优先级高于 width/height

设置情况实际尺寸
未设 width,flexBasis=“auto”内容自身宽度
设 width,flexBasis=“auto”使用 width 值
设 flexBasis(100)固定为 100vp

最终尺寸=flexBasis(若存在)

8.2 flexGrow:扩展比例

用于分配剩余空间

8.3 flexShrink:收缩比例

当空间不足时,按比例压缩

压缩比:3 : 2 → 总份 5

九、典型应用场景代码示例

实现:水平排列、两端对齐、垂直居中

Flex({direction: FlexDirection.Row,justifyContent: FlexAlign.SpaceBetween,alignItems: ItemAlign.Center
}) {Text('左侧').width('30%').height(50).backgroundColor('#F5DEB3')Text('中间').width('30%').height(50).backgroundColor('#D2B48C')Text('右侧').width('30%').height(50).backgroundColor('#F5DEB3')
}
.height(70)
.width('90%')
.backgroundColor('#AFEEEE')

十、知识点总结

知识点 1:主轴与交叉轴

主轴决定排列方向,交叉轴垂直于主轴。通过 direction 控制主轴方向。

知识点 2:justifyContent 与 alignItems

justifyContent 控制主轴对齐;alignItems 控制交叉轴对齐,影响所有子元素。

知识点 3:flexGrow 与 flexShrink

flexGrow 分配多余空间;flexShrink 在空间不足时按比例压缩子元素。

http://www.dtcms.com/a/594507.html

相关文章:

  • CANN在智能视频分析场景中的实践应用
  • 基于ESP32的宠物喂食小屋
  • 西昌有做网站的公司吗海南网站设计公司
  • Prometheus实战教程 - 服务发现
  • 卸载搜狗压缩软件
  • 企业网站制作免费下载效果图网站发帖平台
  • 做网站的时候用的什么框架app下载汅api免费下载大全视频
  • 鸿蒙应用开发之实现键值型数据库跨设备数据同步
  • 企业网站域名备案流程营销网红
  • 双擎驱动 AI 开发:智能体全流程评测 + 应用编排创新实践指南
  • 小杰-大模型(four)——RAG与Agent设计——Langchain-chain链
  • 吐鲁番大型网站建设平台素材库网站
  • mysql表的连接——内外连接
  • Java文件与IO流完全指南
  • 深圳建站公司兴田德润官网多少宁波网站推广建站
  • 学会网站建设能成为一项职业吗十大免费音乐网站
  • 零基础学JAVA--Day28(包装类+String类)
  • 网站的关键词排名怎么做怎么做网站优化的
  • 前端项目目录结构全解析
  • whisperX 安装及测试
  • 建立网站一般那些阶段成都工信部网站
  • 手机网站页面文字做多大网站开发课表查询
  • Python数据挖掘之聚类
  • 企业做网站需要注意事项广西建设安全员证查询网站
  • 网站统计WordPress轻量企业主题
  • 花都网站建设哪家好电子商务网站建设期末试题08答案
  • Node-RED生态中的Sparkplug B社区节点介绍
  • pyspark入门实操(收藏版)
  • 可以在家做兼职的网站做招聘信息的网站有哪些方面
  • 织梦网站图片修改不了网站建设专业性