【愚公系列】华为鸿蒙OS-04-容器组件一(JS开发版) 原创

愚公搬代码
发布于 2022-1-21 16:15
浏览
2收藏

春节不停更,此文正在参加「星光计划-春节更帖活动」

@TOC

容器组件

这只是第一部分

一、badge

1.HML代码

<div class="container">
    <!-- placement:标记位置;label:设置文本提醒值 -->
    <badge class="badge" config="{{badgeConfig}}" visible="true" count="100" maxcount="99">
        <text class="text1">badge</text>
    </badge>
    <!-- label:用法 -->
    <badge class="badge" config="{{badgeConfig1}}" visible="true" count="100" maxcount="99" label="like">
        <text class="text1">badge</text>
    </badge>
    <!-- placement:用法 -->
    <badge class="badge" config="{{badgeConfig}}" visible="true" count="100" maxcount="99" placement="left">
        <text class="text1">badge</text>
    </badge>
    <!-- visible:用法 -->
    <badge class="badge" visible="true" count="0">
        <text class="text2">badge</text>
    </badge>
    <badge class="badge" visible="false" count="0">
        <text class="text2">badge</text>
    </badge>
</div>

2.CSS代码

.container {
    flex-direction: column;
    width: 100%;
    align-items: center;
}
.badge {
    width: 50%;
    border-radius: 50px;
    margin-top: 20px;
}
.text1 {
    background-color: #f9a01e;
    font-size: 40px;
}
.text2 {
    background-color: #46b1e3;
    font-size: 40px;
}

3.JS代码

export default {
    data:{
        badgeConfig:{
            badgeColor:"red",//新事件标记背景色。
            textColor:"#ffffff",//数字标记的数字文本颜色。
            textSize:"20px",//数字标记的数字文本大小。
            badgeSize:"24px",//圆点标记的默认大小。
        },
        badgeConfig1:{
            badgeColor:"#0a6589",//新事件标记背景色。
            textColor:"#ffffff",//数字标记的数字文本颜色。
            textSize:"20px",//数字标记的数字文本大小。
            badgeSize:"24px",//圆点标记的默认大小。
        },
    }
}

4.效果

【愚公系列】华为鸿蒙OS-04-容器组件一(JS开发版)-鸿蒙开发者社区

二、dialog

1.HML代码

<div class="doc-page">
    <!-- 弹框按钮 -->
    <div class="btn-div">
        <button value="点击弹框" class="btn" onclick="showDialog"></button>
    </div>
    <!-- dialog弹框 -->
    <!-- drag_able:设置对话框是否支持拖拽 -->
    <dialog id="simpleDialog" dragable="true" class="dialog-main" @cancel="cancelDialog">
        <div class="dialog-div">
            <div class="inner-txt">
                <text class="txt" @doubleclick="doubleClick">愚公的dialog</text>
            </div>
            <div class="inner-btn">
                <button type="capsule" value="取消" @click="cancelSchedule" class="btn-txt"></button>
                <button type="capsule" value="确认" @click="setSchedule" class="btn-txt"></button>
            </div>
        </div>
    </dialog>
</div>

2.CSS代码

/* xxx.css */
.doc-page {
    flex-direction: column;
    justify-content: center;
    align-items: center;
}
.btn-div {
    width: 100%;
    height: 300px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.btn {
    background-color: #F2F2F2;
    text-color: #0D81F2;
}
.txt {
    color: #000000;
    font-weight: bold;
    font-size: 39px;
}
.dialog-main {
    width: 500px;
}
.dialog-div {
    flex-direction: column;
    align-items: center;
}
.inner-txt {
    width: 400px;
    height: 160px;
    flex-direction: column;
    align-items: center;
    justify-content: space-around;
}
.inner-btn {
    width: 400px;
    height: 120px;
    justify-content: space-around;
    align-items: center;
}
.btn-txt {
    background-color: #F2F2F2;
    text-color: #0D81F2;
}

3.JS代码

import prompt from '@system.prompt';
export default {
    //显示弹框
    showDialog(e) {
        this.$element('simpleDialog').show()
    },
    //取消对话框
    cancelDialog(e) {
        prompt.showToast({
            message: '对话框消失了'
        })
    },
    //取消按钮事件
    cancelSchedule(e) {
        //取消弹框
        this.$element('simpleDialog').close()
        prompt.showToast({
            message: '取消成功'
        })
    },
    //确认按钮事件
    setSchedule(e) {
        //取消弹框
        this.$element('simpleDialog').close()
        prompt.showToast({
            message: '确认'
        })
    },
    //双击标题事件
    doubleClick(e){
        prompt.showToast({
            message: '标题被点击'
        })
    }
}

4.效果

【愚公系列】华为鸿蒙OS-04-容器组件一(JS开发版)-鸿蒙开发者社区

三、div

1.布局

1.1HML代码

<div class="container">
    <text>
        愚公之Flex布局
    </text>
    <!--Flex 布局-->
    <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>
    <text>
        愚公之grid布局
    </text>
    <!--grid 布局-->
    <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>

</div>

1.2 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;
}

.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;
}

1.3 效果

【愚公系列】华为鸿蒙OS-04-容器组件一(JS开发版)-鸿蒙开发者社区

2.事件

2.1 拖拽事件

<div class="container">
    <div>
        <text>
            愚公系列
        </text>
    </div>
    <div class="content" ondragstart="dragStart" ondrag="drag" ondragend="dragEnd" style="position: absolute;left: {{left}};top:{{top}};">
    <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>
</div>
.container {
    flex-direction: column;
    width: 100%;
    position: relative;
    max-width: 100%;
}
.content{
    width: 200px;
    height: 200px;
    background-color: red;
    position: absolute;
}
import prompt from '@system.prompt';
export default {
    data:{
        left:0,
        top:0,
    },
    //开始拖动
    dragStart(e){
        prompt.showToast({
            message: '开始拖动'
        })
    },
    //拖动中
    drag(e){
        this.left = e.globalX;
        this.top = e.globalY;
    },
    //拖动结束
    dragEnd(e){
        prompt.showToast({
            message: '拖动结束'
        })
    },
    //
    dragEnter(e){
        prompt.showToast({
            message: '进入'
        })
    },
    dragOver(e){
        prompt.showToast({
            message: '移动'
        })
    },
    dragLeave(e){
        prompt.showToast({
            message: '离开'
        })
    },
    drop(e){
        prompt.showToast({
            message: '销毁'
        })
    }
}

【愚公系列】华为鸿蒙OS-04-容器组件一(JS开发版)-鸿蒙开发者社区

2.2 手指捏合事件

<div class="container">
    <div class="content "onpinchstart="pinchStart" onpinchend="pinchEnd" onpinchupdate="pinchUpdate"
         onpinchcancel=" pinchCancel">
    </div>
</div>
.container {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 454px;
    height: 454px;}
.content{
    width: 400px;
    height: 400px;
    background-color: aqua;
    margin:30px
}
import prompt from '@system.prompt';
export default {
    pinchStart(e){
        prompt.showToast({
            message: '捏合开始'
        })
    },
    pinchUpdate(e){
        prompt.showToast({
            message: '捏合更新'
        })
    },
    pinchEnd(e){
        prompt.showToast({
            message: '捏合结束'
        })
    },
    pinchCancel(e){
        prompt.showToast({
            message: '捏合取消'
        })
    }
}

【愚公系列】华为鸿蒙OS-04-容器组件一(JS开发版)-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
2
收藏 2
回复
举报
3条回复
按时间正序
/
按时间倒序
愚公搬代码
愚公搬代码

欢迎大家多多留言

回复
2022-1-21 16:33:32
seiichi123
seiichi123

大佬讲得很详细,收了~

回复
2022-1-21 17:03:25
愚公搬代码
愚公搬代码 回复了 seiichi123
大佬讲得很详细,收了~

后续还会有,多多关注。

回复
2022-1-21 17:15:10
回复
    相关推荐