给Web开发者的HarmonyOS指南02-布局样式

简介: 本系列教程适合鸿蒙 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。

给Web开发者的HarmonyOS指南02-布局样式

本系列教程适合鸿蒙 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。

本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。

开发环境准备

  • DevEco Studio 5.0.3
  • HarmonyOS Next API 15

鸿蒙前端封面图.png

布局基础对比

在Web开发中,我们使用CSS来控制元素的布局和样式。而在HarmonyOS的ArkUI中,我们使用声明式UI和链式API来实现相同的效果。本文将对比两种框架在布局方面的异同。

盒子模型

在Web开发中,CSS盒子模型包含内容(content)、内边距(padding)、边框(border)和外边距(margin)。
在ArkUI中,这些概念依然存在,只是写法有所不同,容易上手。

HTML/CSS代码:

<div class="box">
  盒子模型
</div>

<style>
  .box {
    
    box-sizing: border-box;
    /* 内容 */
    width: 150px;
    height: 100px;
    /* 内边距 */
    padding: 10px;
    /* 边框 */
    border: 10px solid pink;
    /* 底部外边距 */
    margin-bottom: 10px;
  }
</style>
AI 代码解读

ArkUI代码:

Text('盒子模型')
  .width(150)
  .height(100)
  .padding(10)
  .border({
    width: 10, style: BorderStyle.Solid, color: Color.Pink })
  .margin({
    bottom: 10 })
AI 代码解读

背景色和文字颜色

在Web开发中,我们使用 background-colorcolor 属性来设置背景色和文字颜色。
在ArkUI中,我们使用 backgroundColorfontColor 方法。

HTML/CSS代码:

<div class="box">
  背景色、文字色
</div>

<style>
  .box {
    
    /* 背景色 */
    background-color: #36d;
    /* 文字色 */
    color: #fff;
  }
</style>
AI 代码解读

ArkUI代码:

Text('背景色、文字色')
  .backgroundColor('#36d')
  .fontColor('#fff')
AI 代码解读

内容居中

在Web开发中,我们使用 display: flex 配合 justify-contentalign-items 实现内容居中。
在ArkUI中,我们可以使用 ColumnRow 组件配合 justifyContentalignItems 属性。

HTML/CSS代码:

<div class="box">
  内容居中
</div>

<style>
  .box {
    
    display: flex;
    justify-content: center;
    align-items: center;
  }
</style>
AI 代码解读

ArkUI代码:

Column() {
   
  Text('内容居中')
}
.backgroundColor('#36D')
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Center)
.width(150)
.height(100)
.padding(10)
AI 代码解读

圆角

在Web开发中,我们使用border-radius属性来设置圆角。
在ArkUI中,我们使用borderRadius方法。

HTML/CSS代码:

<div class="box">
  圆角
</div>

<style>
  .box {
    
    border-radius: 10px;
  }
</style>
AI 代码解读

ArkUI代码:

Text('圆角')
  .width(150)
  .height(100)
  .backgroundColor('#36D')
  .borderRadius(10)
AI 代码解读

阴影效果

在Web开发中,我们使用box-shadow属性来设置阴影效果。
在ArkUI中,我们使用shadow方法。

HTML/CSS代码:

<div class="box">
  阴影
</div>

<style>
  .box {
    
    box-shadow: 0 6px 50px rgba(0, 0, 0, 0.5);
  }
</style>
AI 代码解读

ArkUI代码:

Text('阴影')
  .width(150)
  .height(100)
  .backgroundColor('#F5F5F5')
  .shadow({
   
    offsetX: 0,
    offsetY: 6,
    radius: 50,
    color: 'rgba(0, 0, 0, 0.5)',
  })
AI 代码解读

布局容器和轴向

基本容器

在Web开发中,我们使用<div>作为通用容器。
在ArkUI中,我们主要使用ColumnRow组件,注意 alignItems 需区分轴向。

HTML/CSS代码:

<div class="column">
  <!-- 垂直方向布局 -->
</div>

<div class="row">
  <!-- 水平方向布局 -->
</div>


<style>
  .column {
    
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  .row {
    
    display: flex;
    flex-direction: row;
    align-items: center;
  }
</style>
AI 代码解读

ArkUI代码:

Column() {
   
  // 垂直方向布局,交叉轴水平居中
}
.alignItems(HorizontalAlign.Center)

Row() {
   
  // 水平方向布局,交叉轴垂直居中
}
.alignItems(VerticalAlign.Center)
AI 代码解读

关键区别总结

  1. 样式应用方式

    • HTML/CSS:使用选择器和属性声明样式
    • ArkUI:使用链式API直接在组件上设置样式
  2. 布局容器

    • HTML:使用 <div> 等标签,配合CSS实现布局
    • ArkUI:使用专门的布局组件如 ColumnRow 等组件,配合样式属性布局
  3. 单位使用

    • HTML/CSS:使用 px、em、rem、百分比等单位
    • ArkUI:使用 px、vp、lpx 、百分比等单位,使用数字单位 vp 可省略
  4. 样式继承

    • HTML/CSS:通过CSS选择器实现样式继承
    • ArkUI:没有样式继承

学习建议

  1. 理解链式API

    • 熟悉ArkUI的链式API调用方式
    • 掌握常用样式方法的命名规则
  2. 布局思维转变

    • 从CSS盒模型思维转向组件化思维
    • 理解ArkUI的布局容器特性
  3. 样式设置习惯

    • 养成使用链式API设置样式的习惯
    • 注意样式方法的参数格式
  4. 组件嵌套

    • 合理使用组件嵌套实现复杂布局
    • 注意组件的父子关系

总结

作为Web开发者,迁移到 HarmonyOS 开发需要适应新的布局和样式设置方式。概念其实非常相似,通过理解这些差异,并掌握ArkUI的组件化开发方式,Web开发者可以快速上手HarmonyOS开发。

希望这篇 HarmonyOS 教程对你有所帮助,期待您的 👍点赞、💬评论、🌟收藏 支持。

megasu
+关注
目录
打赏
0
5
5
0
70
分享
相关文章
给Web开发者的HarmonyOS指南01-文本样式
本系列教程适合 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。
56 5
给Web开发者的HarmonyOS指南01-文本样式
构建响应式Web界面:Flexbox与Grid布局的深度解析
【10月更文挑战第11天】本文深入解析了CSS3中的Flexbox和Grid布局,探讨了它们的特点、应用场景及使用方法。Flexbox适用于一维布局,如导航栏;Grid布局则适用于二维布局,如复杂网格。通过示例代码和核心属性介绍,帮助开发者灵活构建响应式Web界面。
104 5
【前端web入门第六天】02 flex布局
Flex布局是一种现代CSS布局模式,通过给父元素设置`display: flex`,其子元素可自动挤压或拉伸。它包含弹性容器和弹性盒子,主轴默认为水平方向,侧轴为垂直方向。主轴对齐方式由`justify-content`属性控制,侧轴对齐方式包括`align-items`(针对所有子元素)和`align-self`(针对单个子元素)。修改主轴方向使用`flex-direction`属性,`flex`属性用于控制子元素在主轴上的伸缩比例。此外,`flex-wrap`属性允许子元素换行,而`align-content`属性则定义多行对齐方式。
114 9
【布局革命!】Flexbox与Grid双剑合璧:解锁Web设计新纪元,让响应式界面瞬间焕发光彩!
【9月更文挑战第1天】本文通过问答形式深入探讨了Flexbox和Grid布局的特点与应用场景。Flexbox专为单轴布局设计,适用于响应式导航栏和列表;Grid布局则适用于二维布局,可精确控制元素的位置和大小,适合构建复杂的内容区域和仪表板。文章还提供了示例代码,帮助读者更好地理解和应用这两种布局方式,以创建高效、美观的Web界面。
135 9
探索现代Web开发中的CSS Grid布局技术
【8月更文挑战第29天】在数字时代的浪潮中,网页设计不断进化以适应日新月异的用户需求。CSS Grid布局技术作为一项革新性的前端工具,为设计师和开发者提供了前所未有的布局能力。本文旨在通过深入浅出的方式介绍CSS Grid的核心概念、基本用法以及在实际项目中的应用,帮助读者快速掌握这一强大的网页布局工具。
91 3
【Web布局的革命】探索CSS Grid栅格系统,打造未来网页设计!
【8月更文挑战第25天】在网页设计领域,布局至关重要。传统的布局方法难以满足复杂需求,CSS Grid 栅格系统因此诞生。它是一种二维布局模式,能直接控制行和列,简化复杂网格的设计。通过定义 `display: grid;` 创建网格容器,并利用 `grid-template-columns` 和 `grid-template-rows` 设置行列尺寸,轻松实现响应式布局。此外,CSS Grid 支持高级功能,如网格区域划分和对齐设置,极大提升了布局的灵活性和创意空间。随着浏览器兼容性的增强,CSS Grid 必将成为未来网页设计的关键技术之一。
108 1
【布局革命!】Flexbox与Grid双剑合璧:解锁Web设计新纪元,让响应式界面瞬间焕发光彩!
【8月更文挑战第12天】面对复杂的网页布局需求,前端开发者需掌握Flexbox与Grid布局技术。Flexbox专为一维布局设计,适用于构建响应式导航栏或列表;Grid则是一种二维布局系统,适合精确控制复杂网格布局。本文通过问答形式深入讲解这两种布局方式的特点、应用场景及使用方法,并提供示例代码,帮助开发者构建高效美观的Web界面。
87 1
【Unity光照艺术手册】掌握这些技巧,让你的游戏场景瞬间提升档次:从基础光源到全局光照,打造24小时不间断的视觉盛宴——如何运用代码与烘焙创造逼真光影效果全解析
【8月更文挑战第31天】在Unity中,合理的光照与阴影设置对于打造逼真环境至关重要。本文介绍Unity支持的多种光源类型,如定向光、点光源、聚光灯等,并通过具体示例展示如何使用着色器和脚本控制光照强度,模拟不同时间段的光照变化。此外,还介绍了动态和静态阴影、全局光照及光照探针等高级功能,帮助开发者创造丰富多样的光影效果,提升游戏沉浸感。
219 0
Unity物理引擎深度揭秘:从刚体碰撞到软体模拟,全面解析实现复杂物理交互的技巧与秘诀,助你打造超真实游戏体验
【8月更文挑战第31天】物理模拟在游戏开发中至关重要,可让虚拟世界更真实。Unity作为强大的跨平台游戏引擎,内置物理系统,支持从刚体碰撞到布料模拟的多种功能。通过添加Rigidbody组件,可实现物体受力和碰撞;使用AddForce()施加力;通过关节(如Fixed Joint)连接刚体以模拟复杂结构。Unity还支持软体物理,如布料和绳索模拟,进一步增强场景丰富度。掌握这些技术,可大幅提升游戏的真实感和玩家体验。
348 0