写点什么

鸿蒙跨平台开发教程之 Uniapp 布局基础

作者:幽蓝计划
  • 2025-05-11
    山东
  • 本文字数:1383 字

    阅读完需:约 5 分钟

鸿蒙跨平台开发教程之Uniapp布局基础

前两天的文章内容对 uniapp 开发鸿蒙应用做了一些详细的介绍,包括配置开发环境和项目结构目录解读,今天我们正式开始写代码。

入门新的开发语言往往从 Hello World 开始,Uniapp 的初始化项目中已经写好了一个简单的 demo,这里就不再赘述,我们直接从布局开始说起。

Uniapp 的布局方式和鸿蒙原生语言 ArkTs 有所不同,但又颇为神似。

幽蓝君之前总结过,所有的布局方式无非只有三种,横向、竖向和层叠,其他所有的布局方式都由这三种衍生而来,Uniapp 也不例外。

ArkTs 中有 Row()、Column()、Stack()、Flex()这几个基础的布局容器组件,更复杂一些的还有像 List()、Grid()、Scroll()等等。

而在 Uniapp 中,基础的布局方式我们通常直接使用 view 容器来实现。比如我想要实现一个横向的布局,使用 view 容器,在 view 的样式中设置布局方式为 row:


<view style="display: flex;flex-direction: row;" >  <view style="width: 100px;height: 100px;background-color: aqua;">组件1</view>  <view style="width: 100px;height: 100px;background-color:bisque;">组件2</view></view>
复制代码



而到了纵向布局,只需要把布局方向设置 column 就行了:


<view style="display: flex;flex-direction: column;" >  <view style="width: 100px;height: 100px;background-color: aqua;">组件1</view>  <view style="width: 100px;height: 100px;background-color:bisque;">组件2</view></view>
复制代码



接下来比较难的部分到了,对于层叠布局,ArkTs 直接提供了 Stack()容器,并且有对应的对齐方式可以直接设置,比较简单。但是 uniapp 并没有提供这种对齐方式,flex-direction 中是不能直接设置层叠布局的。

我们可以使用 postion 属性来实现。postion 的作用是设置定位方式,有 static、relative、fixed、absolute 集中方式,我们今天要说的是 absolute。

absolute 是一种绝对定位方式,是脱离了文档流、相对于父元素的绝对定位方式。

更详细一点解释就是不管它有多少同级别的组件,都不影响它以父元素左上角为原点的定位,同样的它也不影响别人,相当于悬浮在上层,使用偏移量来控制位置。比如下面这段代码:


<view  style="display: flex;flex-direction: column;position: relative;" ><view style="width: 50px;height: 50px;background-color:bisque;">组件1</view><view style="width: 50px;height: 50px;background-color:blue;">组件2</view><view style="width: 50px;height: 50px;background-color:brown;">组件3</view><view style="width: 100px;height: 100px;background-color: aqua;position: absolute;opacity: 0.5;align-items: center;">组件4</view></view>
复制代码



所以如果需要层叠布局的两个容器都使用 absolute 定位,并且使用 top、left、bottom、right 来设置对齐方式,就实现了鸿蒙中的 Stack()一样的功能:


<view class="content" style="display: flex;flex-direction: column;position: relative;" ><view style="width: 100px;height: 100px;background-color: aqua;position: absolute;top: 0;">组件1</view><view style="width: 50px;height: 50px;background-color:bisque;position: absolute;z-index: 10;top: 0;">组件2</view></view>
复制代码



这里可以使用 z-index 来设置谁在上一层,另外,绝对定位的父容器需要设置 position: relative 属性,否则子组件无法找到目标。

以上就是 Uniapp 开发鸿蒙的基础布局方式,感谢您的阅读。

发布于: 刚刚阅读数: 4
用户头像

幽蓝计划

关注

还未添加个人签名 2025-05-09 加入

还未添加个人简介

评论

发布
暂无评论
鸿蒙跨平台开发教程之Uniapp布局基础_幽蓝计划_InfoQ写作社区