鸿蒙5.0开发进阶:JS组件-div

鸿蒙5.0版开发:UI框架JS组件-容器组件(div) 基础容器,用作页面结构的根节点或将内容进行分组。 阅读详情

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


div

说明

从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

基础容器,用作页面结构的根节点或将内容进行分组。

权限列表

无

子组件

支持。

属性

支持通用属性。

样式

除支持组件通用样式外,还支持如下样式:

名称类型默认值必填描述
flex-directionstringrow否

flex容器主轴方向。可选项有:

- column:垂直方向从上到下。

- row:水平方向从左到右。

flex-wrapstringnowrap否

flex容器是单行还是多行显示,该值暂不支持动态修改。可选项有:

- nowrap:不换行,单行显示。

- wrap:换行,多行显示。

justify-contentstringflex-start否

flex容器当前行的主轴对齐格式。可选项有:

- flex-start:项目位于容器的开头。

- flex-end:项目位于容器的结尾。

- center:项目位于容器的中心。

- space-between:项目位于各行之间留有空白的容器内。

- space-around:项目位于各行之前、之间、之后都留有空白的容器内。

- space-evenly5+: 均匀排列每个元素,每个元素之间的间隔相等。

align-itemsstring

stretch

否

flex容器当前行的交叉轴对齐格式,可选值为:

- stretch:弹性元素在交叉轴方向被拉伸到与容器相同的高度或宽度。

- flex-start:元素向交叉轴起点对齐。

- flex-end:元素向交叉轴终点对齐。

- center:元素在交叉轴居中。

- baseline:如Flex布局纵向排列,则该值与’flex-start‘等效。横向布局时,内容元素存在文本时按照文本基线对齐,否则底部对齐。

align-contentstringflex-start否

交叉轴中有额外的空间时,多行内容对齐格式,可选值为:

- flex-start:所有行从交叉轴起点开始填充。第一行的交叉轴起点边和容器的交叉轴起点边对齐。接下来的每一行紧跟前一行。

- flex-end:所有行从交叉轴末尾开始填充。最后一行的交叉轴终点和容器的交叉轴终点对齐。同时所有后续行与前一个对齐。

- center:所有行朝向容器的中心填充。每行互相紧挨,相对于容器居中对齐。容器的交叉轴起点边和第一行的距离相等于容器的交叉轴终点边和最后一行的距离。

- space-between:所有行在容器中平均分布。相邻两行间距相等。容器的交叉轴起点边和终点边分别与第一行和最后一行的边对齐。

- space-around:所有行在容器中平均分布,相邻两行间距相等。容器的交叉轴起点边和终点边分别与第一行和最后一行的距离是相邻两行间距的一半。

grid-template-[columns|rows]string1行1列否

用于设置当前网格布局行和列的数量,不设置时默认1行1列,仅当display为grid时生效。

示例:如设置grid-template-columns为:

- 50px 100px 60px:分三列,第一列50px,第二列100px,第三列60px;

- 1fr 1fr 2fr:分三列,将父组件允许的宽分为4等份,第一列占1份,第二列占一份,第三列占2份;

- 30% 20% 50%:分三列,将父组件允许的宽为基准,第一列占30%,第二列占20%,第三列占50%;

- repeat(2,100px):分两列,第一列100px,第二列100px;

- repeat(auto-fill,100px)5+:按照每列100px的大小和交叉轴大小计算最大正整数重复次数,按照该重复次数布满交叉轴;

- auto 1fr 1fr:分三列,第一列自适应内部子组件所需宽度,剩余空间分为两等份,第二列占一份,第三列占一份。

grid-[columns|rows]-gap<length>0否用于设置行与行的间距或者列与列的间距,也可以支持通过grid-gap设置相同的行列间距,仅当display为grid时生效。
grid-row-[start|end]number-否用于设置当前元素在网格布局中的起止行号,仅当父组件display样式为grid时生效(仅div支持display样式设置为grid)。
grid-column-[start|end]number-否用于设置当前元素在网格布局中的起止列号,仅当父组件display样式为grid时生效(仅div支持display样式设置为grid)。
grid-auto-flow5+string-否

使用框架自动布局算法进行网格的布局,可选值为:

- row:逐行填充元素,如果行空间不够,则新增行;

- column:逐列填充元素,如果列空间不够,则新增列。

overflow6+stringvisible否

设置元素内容区超过元素本身大小时的表现形式。

- visible:多个子元素内容超过元素大小时,显示在元素外面;

- hidden:元素内容超过元素大小时,进行裁切显示;

- scroll:元素内容超过元素大小时,进行滚动显示并展示滚动条(当前只支持纵向)。

overflow: scroll样式需要元素设置固定的大小,默认滚动方向与容器方向一致。

align-items6+string-否

设置容器中元素交叉轴上的对齐方式:

- stretch:Flex容器内容在交叉轴方向被拉伸到与容器相同的高度或宽度;

- flex-start:Flex布局容器内元素向交叉轴起点对齐;

- flex-end:Flex布局容器内元素向交叉轴终点对齐;

- center:Flex布局容器内元素在交叉轴居中对齐;

- baseline:如Flex布局纵向排列,则该值与'flex-start'等效。横向布局时,内容元素存在文本时按照文本基线对齐,否则底部对齐。

scrollbar-color6+<color>-否设置滚动条的颜色。
scrollbar-width6+<length>-否设置滚动条的宽度。
overscroll-effect6+string-否

设置滚动边缘效果,可选值为:

- spring:弹性物理动效,滑动到边缘后可以根据初始速度或通过触摸事件继续滑动一段距离,松手后回弹;

- fade:渐隐物理动效,滑动到边缘后展示一个波浪形的渐隐,根据速度和滑动距离的变化渐隐也会发送一定的变化;

- none:滑动到边缘后无效果

事件

除支持通用事件外,还支持如下事件:

名称参数描述
reachstart6+-当页面滑动到最开始的点时触发的事件回调,当flex-direction: row时才会触发。
reachend6+-当页面滑动到最末尾的点时触发的事件回调,当flex-direction: row时才会触发。
reachtop6+-当页面滑动到最上部的点时触发的事件回调,当flex-direction: column时才会触发。
reachbottom6+-当页面滑动到最下部的点时触发的事件回调,当flex-direction: column时才会触发。

方法

除支持通用方法外,还支持如下方法:

名称参数返回值描述
getScrollOffset6+-ScrollOffset

获取元素内容的滚动偏移。

需要设置overflow样式为scroll。

scrollBy6+ScrollParam-

指定元素内容的滚动偏移。

需要设置overflow样式为scroll。

表1 ScrollOffset6+

名称类型描述
xnumber在x轴方向的偏移,单位为px。
ynumber在y轴方向的偏移,单位为px。

表2 ScrollParam6+

名称类型描述
dxnumber水平方向滑动的偏移量,单位px。
dynumber垂直方向滑动的偏移量,单位px。
smoothboolean是否平滑处理。

示例

  1. Flex样式

    <!-- xxx.hml -->
    <div class="container">
      <div class="flex-box">
        <div class="flex-item color-primary"></div>
        <div class="flex-item color-warning"></div>
        <div class="flex-item color-success"></div>
      </div>
    </div>
    /* xxx.css */
    .container {
      flex-direction: column;
      justify-content: center;
      align-items: center;
      width: 454px;
      height: 454px;
    }
    .flex-box {
      justify-content: space-around;
      align-items: center;
      width: 400px;
      height: 140px;
      background-color: #ffffff;
    }
    .flex-item {
      width: 120px;
      height: 120px;
      border-radius: 16px;
    }
    .color-primary {
      background-color: #007dff;
    }
    .color-warning {
      background-color: #ff7500;
    }
    .color-success {
      background-color: #41ba41;
    }

  2. Flex Wrap样式

    <!-- xxx.hml -->
    <div class="container">
      <div class="flex-box">
        <div class="flex-item color-primary"></div>
        <div class="flex-item color-warning"></div>
        <div class="flex-item color-success"></div>
      </div>
    </div>
    /* xxx.css */
    .container {
      flex-direction: column;
      justify-content: center;
      align-items: center;
      width: 454px;
      height: 454px;
    }
    .flex-box {
      justify-content: space-around;
      align-items: center;
      flex-wrap: wrap;
      width: 300px;
      height: 250px;
      background-color: #ffffff;
    }
    .flex-item {
      width: 120px;
      height: 120px;
      border-radius: 16px;
    }
    .color-primary {
      background-color: #007dff;
    }
    .color-warning {
      background-color: #ff7500;
    }
    .color-success {
      background-color: #41ba41;
    }

  3. Grid样式

    <!-- xxx.hml -->
    <div class="common grid-parent">
      <div class="grid-child grid-left-top"></div>
      <div class="grid-child grid-left-bottom"></div>
      <div class="grid-child grid-right-top"></div>
      <div class="grid-child grid-right-bottom"></div>
    </div>
    /* xxx.css */
    .common {
      width: 400px;
      height: 400px;
      background-color: #ffffff;
      align-items: center;
      justify-content: center;
      margin: 24px;
    }
    .grid-parent {
      display: grid;
      grid-template-columns: 35% 35%;
      grid-columns-gap: 24px;
      grid-rows-gap: 24px;
      grid-template-rows: 35% 35%;
    }
    .grid-child {
      width: 100%;
      height: 100%;
      border-radius: 8px;
    }
    .grid-left-top {
      grid-row-start: 0;
      grid-column-start: 0;
      grid-row-end: 0;
      grid-column-end: 0;
      background-color: #3f56ea;
    }
    .grid-left-bottom {
      grid-row-start: 1;
      grid-column-start: 0;
      grid-row-end: 1;
      grid-column-end: 0;
      background-color: #00aaee;
    }
    .grid-right-top {
      grid-row-start: 0;
      grid-column-start: 1;
      grid-row-end: 0;
      grid-column-end: 1;
      background-color: #00bfc9;
    }
    .grid-right-bottom {
      grid-row-start: 1;
      grid-column-start: 1;
      grid-row-end: 1;
      grid-column-end: 1;
      background-color: #47cc47;
    }

  4. 拖拽7+

    <!-- xxx.hml -->
    <div class="container">
      <div class="content" ondragstart="dragstart" ondrag="drag" ondragend="dragend" style="position: absolute;left: {{left}};top: {{top}};">
      </div>
    </div>
     /* xxx.css */
     .container {
     flex-direction: column;
     width: 100%;
     height: 100%;
     }
     .content {
     width: 200px;
     height: 200px;
     background-color: red;
     }
    // xxx.js
    import promptAction from '@ohos.promptAction';
    export default {
      data:{
        left:0,
        top:0,
      },
      dragstart(e){
        prompt.showToast({
          message: 'Start to be dragged'
        })
      },
      drag(e){
        this.left = e.globalX;
        this.top = e.globalY;
      },
      dragend(e){
        promptAction.showToast({
          message: 'End Drag'
        })
      }
    }

    <!-- xxx.hml -->
    <div class="container">
      <div class="content" ondrag="drag" style="position: absolute;left: {{left}};top: {{top}};"></div>
      <div style="width: 500px; height: 500px; background-color: yellow; position: fixed; left: 15%; top: 30%; opacity:0.3"
        ondragenter="dragenter" ondragover="dragover" ondragleave="dragleave" ondrop="drop">
      </div>
    </div>
    /* xxx.css */
    .container {
      flex-direction: column;
      width: 100%;
      position: relative;
      max-width: 100%;
    }
    .content{
      width: 200px;
      height: 200px;
      background-color: red;
      position: absolute;
    }
    // xxx.js
    import promptAction from '@ohos.promptAction';
    export default {
      data:{
        left:0,
        top:0,
      },
      drag(e){
        this.left = e.globalX;
        this.top = e.globalY;
      },
      dragenter(e){
        promptAction.showToast({
          message: 'enter'
        })
      },
      dragover(e){
        promptAction.showToast({
          message: 'over'
        })
      },
      dragleave(e){
        promptAction.showToast({
          message: 'leave'
        })
      },
      drop(e){
        promptAction.showToast({
          message: 'drop'
        })
      }
    }

  5. 手指捏合7+

    <!-- xxx.hml -->
    <div class="container">
      <div class="content" onpinchstart="pinchstart" onpinchend="pinchend" onpinchupdate="pinchupdate"
        onpinchcancel="pinchcancel"> 
      </div>
    </div>
    /* xxx.css */
    .container {
      flex-direction: column;
      justify-content: center;
      align-items: center;
      width: 454px;
      height: 454px;
    }
    .content {
      width: 400px;
      height: 400px;
      background-color: aqua;
      margin: 30px;
    }
    // xxx.js
    import promptAction from '@ohos.promptAction';
    export default {
      pinchstart(e){
        promptAction.showToast({
          message: 'pinchstart!!!'
        })
      },
      pinchupdate(e){
        promptAction.showToast({
          message: 'Two-finger pinch update'
        })
      },
      pinchend(e){
        promptAction.showToast({
          message: 'Finished with two fingers pinching'
        })
      },
      pinchcancel(e){
        promptAction.showToast({
          message: 'Finger pinching is interrupted'
        })
      }
    }

鸿蒙5.0版开发:UI框架JS组件-容器组件(swiper) 滑动容器,提供切换子组件显示的能力。 阅读详情

相关推荐

鸿蒙5.0版开发:UI框架JS组件-基础组件(switch)

开关选择器,通过开关,开启或关闭某个功能。

m0_69424697的博客 751

08JS操作DIV样式

1、操作步骤 先创建⼀个div获取到div元素,然后对其进⾏操作 创建div 和操作按钮 获取div和按钮 给按钮添加点击事件 操作div样式 2、示例 实现⼀个“⿏标移⼊,div背景颜⾊变成红⾊,⿏标移出,背景颜⾊变回⽩⾊”的效果。 第⼀步:我们要知道⿏标移⼊事件和⿏标移出事件 ⿏标移⼊事件 `onmouseover` ⿏标移出事件 `onmouseout` 第⼆步:我们要找到需要改变的div元素 我们通过`id`就可以找到我们要改变的`div` 第三步:我们要对修

Blog of Lytracy 2594

鸿蒙HarmonyOS兼容JS的类Web开发-开发指导

设置scale样式属性实现涟漪动画,先使用定位确定元素的位置,确定坐标后创建多个组件实现重合效果,再设置opacity属性改变组件不透明度实现组件隐藏与显示,同时设置scale值使组件可以一边放大一边隐藏,最后设置两个组件不同的动画执行时间,实现扩散的效果。通过设置x(x轴坐标)、y(y轴坐标)、dx(文本x轴偏移)、dy(文本y轴偏移)、fill(字体填充颜色)、stroke(文本边框颜色)、stroke-width(文本边框宽度)等属性实现文本的不同展示样式。

特创数字 1717

html中的div标签的含义和应用

CSS是DHTML的基础,CSS用于设定HTML元素在页面上的显示风格,而CSS-P则是CSS的一个扩展,它可用来控制HTML元素在网页上或者说在窗口的位置。下面的两个链接提供了CSS和CSS-P详尽的技术手册:   W3C CSS-Positioning   Builder.coms CSS Guide   在本课程中,将会反复地对CSS进行介绍。   使用DIV标

雨中怡然 3万+

JavaScript中的div是什么意思?

总结一下,div是JavaScript编程中常用的HTML元素,用于创建和组织网页布局。它可以将网页划分为不同的部分,使得开发者可以更好地管理和控制页面的结构。在JavaScript编程中,div是指HTML文档中的一个重要元素,它是用于创建和组织网页布局的常用标签。每个部分都使用了不同的CSS样式,以实现不同的外观效果。标签是一个块级元素,它没有特定的语义含义,但可以通过CSS样式和JavaScript脚本来控制其外观和行为。标签,可以将网页分成逻辑上的模块,使得开发者可以更好地组织和管理页面的结构。

HackMasterX的博客 1062

Cursor 使用教程(2025年更新版)

官方Cursor详细使用教程在“扩展学习”

我是赛博AI Lewis 7082

原生js与jQuery显示隐藏div的几种方法

简介:本文将会讲解,如何使用原生的JS和jquery来实现对于这个div盒子的隐藏。

jakelihua 5580

Faster Planner——Kinodynamic Astar详解

实际成本和启发式成本 实际成本 Actual Cost   每条轨迹的真实代价函数定义如下: J(T)=∫0T∥u(t)∥2dt+ρT \mathcal{J}(T)=\int_{0}^{T}\|\mathbf{u}(t)\|^{2} d t+\rho T J(T)=∫0T​∥u(t)∥2dt+ρT 离散形式下: 启发成本 Heuristic Cost pμ∗(t)=16αμt3+12βμt2+vμc+pμc=pμc+vμc+T2∗((2∗vμc−2∗vμg)/(2∗T)−(6∗pμc−6∗pμg+6∗T∗v

漫长IT路 4835

使用JS制作一个鼠标可拖的DIV(二)——限制区域移动

这次是要对上一篇的内容进行扩展。 由于需要对可拖动的 DIV 进行一个区域范围的限制,所以要给于一个容器,让可拖动的 DIV 元素不能逃出该容器的大小范围。 一、思路 1.在外层增加一个 DIV 容器,并设置好容器的大小。(即:宽和高) 当容器存在边框的时候,由于这里还没找到获取的方法,所以,在容器边框大于 0 的时候,获得的容器的限制区域的坐标会有误差。 为了避免这情况,可以在多...

weixin_34246551的博客 858

QT5.14.2离线安装包保姆级教程:断网、选组件、避坑全记录

本文详细介绍了QT5.14.2离线安装包的完整流程,特别针对Windows平台开发者提供断网安装、组件选择及避坑指南。作为QT5系列中最后一个免费离线版本,5.14.2具有免注册、全组件离线安装等独特优势,是开源开发者的理想选择。文章涵盖从环境准备到安装后配置的全方位指导,帮助开发者高效完成安装并避免常见问题。

weixin_30924087的博客 579

开源代码分享(29)-基于拉丁超立方抽样的风光场景生成和削减

作为分层抽样方法的一 种,拉丁超立方抽样具有良好的抽样精度和效率[14]。本文使用多场景方法来描述可再生能源(风电、光伏)的不确定性。以风电功率为例,首先假定风电功率服从正态分布 N(μ, δ 2 ),μ 为预测值的期望值,δ 为其波动的百分比。接着,采用拉丁超立方抽样[21]生成大量服从概率分布约束的风电出力场景,并采用考虑 Kantorovich 距离[22]的场景削减技术处理该场景,进行场景削减。最后,导出具有相应概率的削减之后的场景。

配电网和matlab的博客 924

鸿蒙5.0开发进阶:JS组件-容器组件(div)

基础容器,用作页面结构的根节点或将内容进行分组。

Androidbye的博客 779

手把手教你用PLECS仿真BUCK数字电源(含DSP代码实现)

本文详细介绍了如何利用PLECS仿真软件与Visual Studio 2022搭建高保真数字电源开发环境,手把手指导从BUCK电路建模、编写硬件感知的C控制算法到参数调优的全过程。重点阐述了通过DLL接口实现软件在环仿真,模拟DSP的ADC/PWM时序,并将验证后的代码无缝迁移至TI C2000系列DSP,构建从仿真到固件的完整数字电源开发闭环,显著提升开发效率与一次成功率。

oo7890的博客 399

鸿蒙5.0开发进阶:ArkUI框架-JS容器组件(div)

基础容器,用作页面结构的根节点或将内容进行分组。

Androidbye的博客 915

Android Framework AudioFlinge 面试题及参考答案

请解释什么是 AudioFlinger? AudioFlinger 是 Android 音频系统中的一个关键服务。它位于 Android 系统的中间层,是连接上层应用和底层音频硬件驱动的重要桥梁。从功能角度来讲,它主要负责音频数据的混合(Mix)以及输出(Output)。 当多个应用程序同时播放音频时,比如一个音乐播放器在播放歌曲,同时手机的闹铃响起,AudioFlinger 就会发挥它的混合功能。它会把这些不同来源的音频数据按照一定的规则和算法混合在一起。这种混合并不是简单的相加,而是要考

大模型大数据攻城狮的专栏 1578

人形机器人开源资源大盘点(四):硬件开源平台

开源人形机器人平台推动技术民主化 本期聚焦四大开源人形机器人平台:斯坦福的ToddlerBot以6000美元低成本实现30自由度运动,支持仿真到现实的零样本迁移;法国Reachy2被HuggingFace收购,融合开源AI与硬件,适配医疗、工业等场景;国内OriginMan基于ROS2全开源,集成大模型能力,支持深度改造;OAN框架则为经典NAO机器人注入开源活力,扩展交互功能。这些平台通过不同路径降低研发门槛,推动人形机器人技术走向开放共享的未来。

Studying…… 370

鸿蒙5.0开发进阶:JS组件-swiper

滑动容器,提供切换子组件显示的能力。

Androidbye的博客 1069

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

鸿蒙5.0开发进阶:JS组件-容器组件(stack)

堆叠容器,子组件按照顺序依次入栈,后一个子组件覆盖前一个子组件。

Androidbye的博客 954

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【鸿蒙next开发】JS组件:容器组件(div)

本文详细介绍了鸿蒙HarmonyOS 5.0中div容器组件的使用方法和样式属性。

m0_73088370的博客 608

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

鸿蒙5.0开发进阶:JS组件-stepper

步骤导航器。当完成一个任务需要多个步骤时,可以使用步骤导航器展示当前进展。

Androidbye的博客 774

鸿蒙5.0开发进阶:JS组件-基础组件(switch)

开关选择器,通过开关,开启或关闭某个功能。

Androidbye的博客 852

鸿蒙5.0开发进阶:JS组件-svg组件(animate)

设置svg组件的属性动画。

Androidbye的博客 821

鸿蒙5.0开发进阶:JS组件-refresh

下拉刷新容器。

Androidbye的博客 756
上一篇: 鸿蒙5.0开发进阶:JS组件-dialog
下一篇: 鸿蒙5.0开发进阶:JS组件-form
懂你的大海
博客等级 码龄6年 9049粉丝 1381原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值