站在前端的角度,看鸿蒙页面布局

从Web前端转向鸿蒙(HarmonyOS)开发时,理解其页面布局的相似与差异是快速上手的核心。鸿蒙的ArkUI框架在布局理念上与Web前端有诸多相通之处,但也存在关键区别。以下从五个维度系统分析:

📦 一、盒子模型:概念相似,实现不同 

相似性
鸿蒙的盒子模型仍包含内容(content)、内边距(padding)、边框(border)、外边距(margin),与CSS完全一致 

// ArkUI 盒子模型示例
Text('内容').width(100)    // 内容宽度.padding(20)   // 内边距.border({ width: 2, color: Color.Black }) // 边框.margin({ top: 10 }) // 外边距

差异点

  • 单位:鸿蒙默认使用逻辑像素vp(可省略单位)但也是有px2vp等方法进行转换 ,而CSS常用px/em/rem。所有单位问题很好解决

  • 样式继承:ArkUI不支持样式继承,需为每个组件单独设置样式,而CSS可通过选择器继承,

📐 二、布局容器:组件化 vs 标签化

鸿蒙用专用布局组件替代HTML的通用容器,更强调结构化,并且鸿蒙中没有了行块元素的区别

布局类型Web前端实现鸿蒙实现对应关系
线性布局div { display: flex; }Row() 或 Column()Row ≈ flex-direction: row
层叠布局position: absoluteStack()类似绝对定位,支持zIndex
弹性布局display: flexFlex()概念一致,属性命名相似
栅格布局display: gridGridRow() + GridCol()用于多设备响应式适配

示例:水平居中布局

// ArkUI(使用Column+Text)
Column() {Text("居中文本")
}
.justifyContent(FlexAlign.Center) // 主轴居中
.alignItems(HorizontalAlign.Center) // 交叉轴居中
.width('100%')

/* CSS 等效代码 */
.container {display: flex;justify-content: center;align-items: center;
}

  

🎨 三、样式应用:链式API vs CSS选择器

  • Web前端:通过CSS选择器(类、ID)批量定义样式,实现结构与样式分离。

  • 鸿蒙:采用链式API直接在组件上设置样式,强调内联声明:

Text("蓝色文本").fontColor("#FFF")      // 文字颜色.backgroundColor("#36D") // 背景色.borderRadius(10)       // 圆角.shadow({ radius: 10, color: 'rgba(0,0,0,0.5)' }) // 阴影:cite[1]:cite[3]

 💡 关键差异:ArkUI不支持全局样式复用(如CSS类),需为每个组件单独设置样式。如果鸿蒙中想复用style可以使用 @Styles

📱 四、响应式布局:媒体查询 vs 内置断点系统

两者均支持多端适配,但实现逻辑不同:

  • Web前端:通过@media (max-width: 768px)定义断点。

  • 鸿蒙:内置BreakpointSystem,预置sm/md/lg断点,通过条件设置属性:

// 不同断点下修改布局方向
Flex({direction: new BreakPointType({sm: FlexDirection.Column, // 小屏:垂直排列md: FlexDirection.Row,    // 中屏:水平排列}).getValue(currentBreakpoint)
})

🛠️ 五、典型布局场景实现对比

常见UI组件在鸿蒙中通过组合布局+响应式规则实现:

  1. 页签栏(Tab)

    • Web:<div> + CSS Flex/Grid

    • 鸿蒙:Tabs组件,动态调整barPosition(底部/侧边)。

  2. 轮播图(Banner)

    • Web:第三方库(如Swiper.js)

    • 鸿蒙:原生Swiper组件,通过displayCount控制不同屏幕显示数量。

  3. 侧边栏(Sidebar)

    • Web:<aside> + Flex/Grid

    • 鸿蒙:SideBar组件,结合栅格系统调整宽度

🔄 六、前端迁移鸿蒙的关键思维转变

  1. 从选择器到链式调用
    放弃CSS全局样式思维,习惯通过.width().fontColor()等API直接设置样式。

  2. 布局容器优先
    根据需求直接选用Row/Column/Stack等布局组件,而非用通用<div>+CSS模拟。

  3. 响应式设计内置化
    利用鸿蒙预置断点系统,避免手动编写媒体查询

鸿蒙与Web前端布局核心对比总结

特性Web前端鸿蒙ArkUI
布局单位px/em/rem/%vp(逻辑像素)/lpx
样式继承✅ 支持❌ 不支持
布局容器<div> + CSS Flex/GridRow/Column/Stack
样式设置CSS选择器链式API(如.width(100)
响应式适配@media媒体查询BreakpointSystem断点系统
组件化程度依赖第三方框架(如React)原生支持

💎 总结:鸿蒙的布局理念与Web前端高度相通(如盒模型、Flex布局),但通过组件化容器链式API简化了实现流程。前端开发者需适应“放弃全局样式”和“专用布局组件优先”的思维,便能快速迁移至鸿蒙开发,所以会前端的看一眼鸿蒙应该就能画鸿蒙页面了

点击参与鸿蒙认证

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

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

相关文章

JavaWeb遗传算法、TSP、模拟退火、ACO算法等实战应用

Java Web中实现遗传算法的应用 以下是关于Java Web中实现遗传算法的应用场景和实例的整理,涵盖不同领域的解决方案和实现方法: 遗传算法基础结构 在Java Web中实现遗传算法通常需要以下核心组件: 种群初始化:随机生成初始解集。 适应度函数:评估个体优劣。 选择操作:轮…

【图像算法 - 09】基于深度学习的烟雾检测:从算法原理到工程实现,完整实战指南

一、项目背景与需求 视频介绍 【图像算法 - 09】基于深度学习的烟雾检测&#xff1a;从算法原理到工程实现&#xff0c;完整实战指南今天我们使用深度学习来训练一个烟雾明火检测系统。这次我们使用了大概一万五千张图片的数据集训练了这次的基于深度学习的烟雾明火检测模型&a…

间接制冷技术概念及特征

1、基本概念 (1)间接制冷技术即二次制冷技术。常规做法:二次冷却液储液罐增加放置于制冷系统管路,促使冷量再快捷的传递给载冷剂,继而载冷剂冷量促使冷库达到制冷效果。间接制冷技术:通过常压的二次冷却介质进行大循环传送冷量,在直接制冷剂不易应用的位置或者不可运用直…

Antlr学习笔记 01、maven配置Antlr4插件案例Demo

文章目录前言源码插件描述pom引入插件案例&#xff1a;实现hello 标识符 案例1、引入Antlr4的pom运行依赖2、定义语义语法&#xff0c;配置.g4文件实现java代码3、编写完之后&#xff0c;执行命令实现编译4、编写单测测试使用参考文章资料获取前言 博主介绍&#xff1a;✌目前…

PostGIS面试题及详细答案120道之 (101-110 )

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

第十七天:原码、反码、补码与位运算

原码、反码、补码与位运算 一、原码、反码、补码 1、原码 定义&#xff1a;原码是一种简单的机器数表示法。对于一个有符号整数&#xff0c;最高位为符号位&#xff0c; 0 表示正数&#xff0c; 1 表示负数&#xff0c;其余位表示数值的绝对值。示例&#xff1a;以 8 位二进制…

一次完整的 Docker 启动失败排错之旅:从 `start-limit` 到 `network not found

一次完整的 Docker 启动失败排错之旅&#xff1a;从 start-limit 到 network not found 你是否也曾自信地敲下 sudo systemctl start docker&#xff0c;却只得到一个冰冷的 failed&#xff1f;这是一个开发者和运维工程师都可能遇到的场景。本文将通过一个真实的排错案例&…

Tdengine 时序库年月日小时分组汇总问题

年月分组select to_char(collection_time ,"yyyy-mm") AS date, cast(SUM(a.stage_value)as DOUBLE) as stage_value from TABLE GROUP BY date年月日分组select to_char(collection_time ,"yyyy-mm-dd") AS date, SUM(a.stage_value)as DOUBLE) as stage_…

数据结构(01)—— 数据结构的基本概念

408前置学习C语言基础也可以看如下专栏&#xff1a;打怪升级之路——C语言之路_ankleless的博客-CSDN博客 目录 1. 基本概念 1.1 数据 1.2 数据元素 1.3 数据项 1.4 组合项 1.5 数据对象 1.6 数据类型 2. 数据结构 2.1 逻辑结构 2.2 存储结构 2.3 数据的运算 在学…

什么是模型并行?

模型并行c 简单来说&#xff0c;就是把一个模型拆开来放到多个 GPU 上&#xff0c;一起训练&#xff0c;从而化解“显存塞不下模型”的问题!更多专业课程内容可以听取工信部电子标准院《人工智能大模型应用工程师》课程获得详解&#xff01;

跑yolov5的train.py时,ImportError: Failed to initialize: Bad git executable.

遇到的问题&#xff1a; Traceback (most recent call last):File "D:\miniconda\envs\yolov5\lib\site-packages\git\__init__.py", line 296, in <module>refresh()File "D:\miniconda\envs\yolov5\lib\site-packages\git\__init__.py", line 287…

TCP如何实现可靠传输?实现细节?

TCP如何实现可靠传输&#xff1f;实现细节&#xff1f;如何实现可靠传输&#xff1f;拥塞控制的主要机制TCP流量控制怎么实现的&#xff1f;如何实现可靠传输&#xff1f; TCP通过自身的序列号、确认应答、数据效验、超时重传、流量控制、拥塞避免&#xff0c;确保了数据传输的…

Linux 服务器性能监控、分析与优化全指南

Linux 服务器性能监控、分析与优化在现代 IT 架构中&#xff0c;Linux 服务器作为承载业务系统的核心载体&#xff0c;其性能表现直接决定了服务的稳定性、响应速度与用户体验。无论是高并发的 Web 服务、数据密集型的数据库集群&#xff0c;还是承载虚拟化平台的宿主机&#x…

基于wenet和模型做企业直播敏感语音屏蔽技术

本文介绍了基于Wenet语音识别工具包的实时敏感词屏蔽技术方案。该方案通过客户端缓存25秒直播内容&#xff0c;利用Wenet的流式识别和断句检测功能&#xff0c;实时检测讲师语音中的敏感词&#xff0c;并将对应位置的语音替换为"哔"声。文章详细阐述了Wenet的两种识别…

42.MySQL视图

1.一个需求emp 表的列信息很多&#xff0c;有些信息是个人重要信息 (比如 sal, comm, mgr, hiredate)&#xff0c;如果我们希望某个用户只能查询 emp 表的 (empno、ename, job 和 deptno ) 信息&#xff0c;有什么办法&#xff1f;表的数据&#xff1a;想让用户查询到的&#x…

MinIO01-入门

零、文章目录 MinIO01-入门 1、介绍 &#xff08;1&#xff09;介绍 MinIO 是一款基于 Apache License v2.0 的开源对象存储系统&#xff0c;专为海量非结构化数据&#xff08;如图片、视频、日志文件等&#xff09;设计&#xff0c;兼容 Amazon S3 API&#xff0c;支持高性…

*Docker数据卷(Volume)核心机制剖析:持久化与共享的终极解决方案

根本问题当容器被删除时&#xff0c;其内部产生的所有文件&#xff08;包括配置文件、数据库、日志&#xff09;都会不可逆丢失。数据卷&#xff08;Volume&#xff09;通过外置存储方案彻底解决此痛点。一、数据卷与普通容器存储对比实验 场景1&#xff1a;无卷模式下的写入悲…

原型模式在C++中的实现与面向对象设计原则

引言 在软件开发中&#xff0c;原型模式是一种常用的设计模式&#xff0c;主要用于创建对象的克隆。通过原型模式&#xff0c;我们可以避免复杂的对象创建过程&#xff0c;尤其是当对象的初始化需要大量资源或复杂操作时。本文将通过一个具体的例子&#xff0c;详细介绍如何在C…

SpringCloud学习------Gateway详解

在微服务架构中&#xff0c;随着服务数量的激增&#xff0c;如何统一管理服务入口、实现请求路由、保障服务安全等问题日益突出。SpringCloud Gateway 作为 Spring 官方推出的网关组件&#xff0c;凭借其强大的功Gateway 是 Spring 官方基于 Spring、SpringBoot 和 Project Rea…

计算机网络:子网掩码在路由转发中的关键作用

在路由表中,子网掩码是一个不可或缺的组成部分,其核心作用是精确界定IP地址中“网络位”和“主机位”的边界,从而实现路由器对数据包的准确转发。以下从多个角度详细解释其必要性: 1. 区分网络位与主机位,定位目标网络 IP地址由“网络标识”(网络位)和“主机标识”(主…