前端开发者30分钟搞定鸿蒙布局一 原创
头像 leson 2025-10-09 18:55:04    发布
11136 浏览 271 点赞 0 收藏

“当你的CSS肌肉记忆遇到鸿蒙ArkUI——不是挑战,而是降维打击!

作为前端开发者,你早已征服Flexbox、玩转Grid布局、驯服响应式设计。现在,鸿蒙生态正以万亿级市场红利敞开大门,而我要告诉你一个被无数同行验证的事实:迁移鸿蒙布局的核心技能,你只需30分钟!喝杯咖啡的时间,你就能让代码在HarmonyOS上华丽绽放!

容器组件使用

前端中声明一个容器   高100  宽100  背景色   边框的写法


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
        .box{
            width: 100px;
            height: 100px;
            background-color: red;
            border: 10px solid black;
        }
    </style>
</head>
<body>
    <div class="box"></div>
    
</body>
</html>

鸿蒙中声明一个容器   高100  宽100  背景色   边框的写法


 @Entry
@Component
struct Index {

  build() {
   //看这里就可以了
    Column() {
    }.width(100).height(100).backgroundColor(Color.Red)
      .border({
        width:10,
        color:Color.Black,
        style:BorderStyle.Solid
      })

  }
}

PS:鸿蒙中需要单位可以不加默认是vp  前端中单位要写px,核心单词都是一样的,只不过鸿蒙中都是属性方法  一个个点出来的

效果如下  红色的背景,黑色的边框

​​​


线性容器布局的使用

作为前端开发者 容器布局只需要掌握弹性盒(Flex) 在鸿蒙中如果是线性布局相关内容可以直接会

需求:一个大盒子里面有三个小盒子 横向排列 平均分

前端中


    <style>
       
        .box{
            width: 100%;
            display: flex;
            flex-direction: row;
        }
        .box  .item{
            flex: 1;
            background-color: red;
            color: wheat;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
    </div>
</body>

鸿蒙中


@Entry
@Component
struct Second {
  @Styles
  MyStyle(){
    .backgroundColor(Color.Red)
  }

  build() {
    Flex({ direction: FlexDirection.Row }) {

      Row() {
        Text("1").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

      Row() {
        Text("2").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

      Row() {
        Text("3").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

    }
    .height('100%')
    .width('100%')
  }
}

PS:鸿蒙中主要容器是Flex   控制在Flex的方法中添加属性  属性名称和前端Flex的属性名称一样

公共样式可以抽出来用@Styles来包裹 使用的时候点击公共样式的名称就可以了

效果


实操

1:改变主轴方向

代码


@Entry
@Component
struct Second {
  @Styles
  MyStyle(){
    .backgroundColor(Color.Red)
  }

  build() {
    Flex({ direction: FlexDirection.Column }) {

      Row() {
        Text("1").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

      Row() {
        Text("2").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

      Row() {
        Text("3").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

    }
    .height('100%')
    .width('100%')
  }
}


2:改变交叉轴的位置(交叉轴水平布局的交叉轴是垂直方向,  垂直方向布局的交叉轴就是水平)

修改刚才的代码

容器高度为200  里面子元素高度20  子元素水平布局   垂直方向(交叉轴) 垂直居中

前端代码如下


    <style>
       
        .box{
            width: 100%;
            height: 100px;
            display: flex;
            flex-direction: row;
            align-items: center;
            border: 5px solid blue;
        }
        .box  .item{
            flex: 1;
            background-color: red;
            color: wheat;
            height: 20px;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
    </div>
</body>

前端页面效果


鸿蒙中代码


@Entry
@Component
struct Second {
  @Styles
  MyStyle(){
    .backgroundColor(Color.Red)
    .height(20)
  }

  build() {
    Flex({
      direction: FlexDirection.Row,
      alignItems:ItemAlign.Center
    }) {

      Row() {
        Text("1").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

      Row() {
        Text("2").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

      Row() {
        Text("3").fontColor(Color.White)
      }.flexGrow(1).MyStyle()

    }
    .height(200)
    .width('100%')
    .border({
      width:10,
      color:Color.Blue,
      style:BorderStyle.Solid
    })
  }
}

效果

同理 如果内容没有平均分   可以设置主轴去控制位置

前端中



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }
       
        .box{
            width: 100%;
            height: 100px;
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content:space-between;/*新增两端对齐  这样的属性有六个 start  end  center  space—around  space-evenly*/
            border: 5px solid blue;
        }
        .box  .item{
            /* flex: 1;这里注释了 */
            background-color: red;
            color: wheat;
            height: 20px;
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
    </div>
</body>
</html>

效果  两端对齐中间平分


鸿蒙中


@Entry
@Component
struct Second {
  @Styles
  MyStyle(){
    .backgroundColor(Color.Red)
    .height(20)
  }

  build() {
    Flex({
      direction: FlexDirection.Row,
      alignItems:ItemAlign.Center,
      justifyContent:FlexAlign.SpaceBetween
    }) {

      Row() {
        Text("1").fontColor(Color.White)
      }.MyStyle()

      Row() {
        Text("2").fontColor(Color.White)
      }.MyStyle()

      Row() {
        Text("3").fontColor(Color.White)
      }.MyStyle()

    }
    .height(200)
    .width('100%')
    .border({
      width:10,
      color:Color.Blue,
      style:BorderStyle.Solid
    })
  }
}

效果​




©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS

暂无评论数据

发布

头像

leson

华为HDE,华为伙伴HDE,鸿蒙生态学堂服务学堂认证讲师。14年互联网软件开发经验,资深全栈软件开发工程师,精通HarmonyOS、C#、GoLang 前端等技术栈。曾参与浦发银行、汇丰银行、中国银行强基金系统研发工作,现主要负责湖北高校HarmonyOS实训教学和鸿蒙APP研发工作

28

帖子

0

提问

2348

粉丝

关注
热门推荐
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255