国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

HarmonyOS - 自定義組件之Slider滑塊

系統 OpenHarmony
本文主要結合HarmonyOS官網上的相關組件以及通用API,實現一個Slider滑塊組件。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??

前言

最近在學習HarmonyOS開發相關知識,在項目開發過程中有用到slider滑塊組件,本文主要結合HarmonyOS官網上的相關組件以及通用API,實現一個slider滑塊組件。

效果演示

#夏日挑戰賽# HarmonyOS - 自定義組件之slider滑塊-開源基礎軟件社區

實現原理

1、觸發條件

基于HarmonyOS通用事件touchstart和touchmove,通過手指剛觸摸屏幕時觸發、手指觸摸屏幕后移動時觸發事件。

2、實現slider滑塊效果

通過touches觸摸事件時的屬性集合,返回屏幕觸摸點的信息數組,拿到localX距離被觸摸組件左上角橫向距離,動態計算出子元素的寬度來實現slider滑塊效果。

3、實現百分比顯示

通過HarmonyOS通用方法getBoundingClientRect()獲取元素自身的寬度;通過滑動的距離除去元素自身的寬度,來實現滑塊移動的百分比。

使用到的官方API

通用方法

getBoundingClientRect()

獲取元素的大小及其相對于窗口的位置。

屬性

類型

描述

width

number

該元素的寬度。

height

number

該元素的高度。

left

number

該元素左邊界距離窗口的偏移。

top

number

該元素上邊界距離窗口的偏移。

通用事件

名稱

參數

描述

是否支持冒泡

touchstart

??TouchEvent??

手指剛觸摸屏幕時觸發該事件。

是5+

touchmove

??TouchEvent??

手指觸摸屏幕后移動時觸發該事件。

是5+

屬性

類型

說明

touches

Array<TouchInfo>

觸摸事件時的屬性集合,包含屏幕觸摸點的信息數組。

屬性

類型

說明

globalX

number

距離屏幕左上角(不包括狀態欄)橫向距離。屏幕的左上角為原點。

globalY

number

距離屏幕左上角(不包括狀態欄)縱向距離。屏幕的左上角為原點。

localX

number

距離被觸摸組件左上角橫向距離。組件的左上角為原點。

localY

number

距離被觸摸組件左上角縱向距離。組件的左上角為原點。

實現過程

hml部分:

<div class="slider-wrapper">
<div class="progressBox">
<text>
<span>{{progress}}%</span>
</text>
</div>
<div class="content">
<div id="slider" @touchstart="boxChoose" @touchmove="boxChoose" style="width: 300px;">
<div class="slider-main" style="width: {{ width }}"></div>
</div>
<div class="dot" style ="left : {{dotLeft}}"></div>
</div>
<div class="progress" >
<text for="{{ (index,item) in stepArr }}">
{{item}}
</text>
</div>

</div>

css部分:

.slider-wrapper {
width: 100%;
display: flex;
align-items: center;
flex-direction: column;
background-color: bisque;
}
.progressBox{
margin-top:50px ;
display: flex;
justify-content: center;
align-items: center;
}
.content{
width: 300px;
display: flex;
align-items: center;
flex-direction: column;
position: relative;
margin-top: 50px;
}
#slider {
width: 300px;
height: 15px;
background-color: pink;
display: flex;
justify-content: center;
}
.slider-main {
background-color: aqua;
width: 0;
height: 100%;
position: absolute;
left: 0;
top: 0;
}
.dot {
border-radius: 50px;
width: 25px;
height: 25px;
background-color: #fff;
border: 1px solid #409eff;
position: absolute;
top: -5px;
}
.progress{
width: 300px;
display: flex;
justify-content: space-between;
align-items: flex-end;
font-size: 20px;
}

js部分:通過動態改變子元素width的寬度來實現slider滑塊效果;給小圓dot相對于它父元素設置為絕對定位,通過動態改變left的值使圓塊移動,把子元素width的寬度賦值給變量dotLeft,就可以實現小圓跟隨滑塊一起移動的效果。

export default {
data: {
progress:0,//百分比
width: 0,
step1: 1,//步長
stepArr:[0,20,40,60,80,100],
dotLeft:-10
},
boxChoose(e) {
let box = this.$element('slider')
let width = e.touches[0].localX // 獲取點擊時距離容器左邊位置
this.dotLeft = width
let elementWidth = box.getBoundingClientRect().width -10 //元素的寬度 - 小圓的偏移量
// 小圓的偏移量臨界值
if ( this.dotLeft >= elementWidth ) {
this.dotLeft = elementWidth
}
if ( this.dotLeft <= -10 ) {
this.dotLeft = -10
}
let compare = elementWidth / (100 / this.step1) // 根據步長計算每一步寬度
this.width = Math.ceil(width / compare) * compare
this.progress = Math.round(this.width / elementWidth *100)
//限制臨界值
if(this.progress >= 100){
this.progress = 100
};
if(this.progress <= 0){
this.progress = 0
}
},
}

總結

這篇文章是我對學習鴻蒙動畫API的一個練習,也算是一個比較常用的組件,后續部分功能還需完善,比如在樣式、功能方面等等,希望可以和大家共同學習鴻蒙更多的知識,一起進步。

??想了解更多關于開源的內容,請訪問:??

??51CTO 開源基礎軟件社區??

??https://ost.51cto.com??。

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2023-01-03 07:40:27

自定義滑塊組件

2021-11-01 10:21:36

鴻蒙HarmonyOS應用

2022-06-30 14:02:07

鴻蒙開發消息彈窗組件

2022-06-20 15:43:45

switch開關鴻蒙

2021-12-24 15:46:23

鴻蒙HarmonyOS應用

2022-07-12 16:56:48

自定義組件鴻蒙

2022-04-24 15:17:56

鴻蒙操作系統

2022-05-20 14:34:20

list組件鴻蒙操作系統

2023-02-20 15:20:43

啟動頁組件鴻蒙

2021-11-24 10:02:53

鴻蒙HarmonyOS應用

2022-10-26 15:54:46

canvas組件鴻蒙

2022-10-25 15:12:24

自定義組件鴻蒙

2021-09-15 10:19:15

鴻蒙HarmonyOS應用

2022-07-06 20:24:08

ArkUI計時組件

2022-02-21 15:16:30

HarmonyOS鴻蒙操作系統

2021-12-21 15:22:22

鴻蒙HarmonyOS應用

2021-12-30 16:10:52

鴻蒙HarmonyOS應用

2021-11-22 10:00:33

鴻蒙HarmonyOS應用

2022-02-16 16:09:12

鴻蒙游戲操作系統

2021-11-04 09:55:50

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

四虎在线免费看| 奇米综合一区二区三区精品视频| 宅男在线国产精品| 濑亚美莉一二区在线视频 | 五月婷婷六月丁香激情| 国产麻豆日韩欧美久久| 日韩国产美国| 国产一区成人| 欧美不卡在线一区二区三区| 亚洲视频一二| 好吊色欧美一区二区三区视频| 中文字幕免费一区二区三区| 欧美一级片一区| 久久资源综合| 4p变态网欧美系列| 林ゆな中文字幕一区二区| 久久99热精品| 久久aimee| 国产成人精品免费视频| 欧美日韩在线网站| 亚洲精品免费网站| 在线成人h网| 日本一区二区三区在线视频| 日本不卡中文字幕| 日韩第一页在线观看| 国产一区美女在线| 国产原创中文在线观看 | 欧美日本亚洲| 日韩av中文字幕一区二区 | 亚洲第一中文字幕在线观看| 成人一级福利| 色午夜这里只有精品| 91精品福利观看| 性金发美女69hd大尺寸| 伊人成综合网yiren22| 日韩免费av片在线观看| 精品视频免费| 日韩欧美中文字幕在线播放| 波多野结衣av在线| 国产亚洲欧美在线| 久久天堂影院| 精品国产乱码久久久久久88av| 国产精品2023| 亚洲精品视频免费在线观看| 国产亚洲综合视频| 黑人巨大精品欧美一区| 日韩网站免费观看| 男人j桶女人的网站| 亚洲巨乳在线| 欧美一级成年大片在线观看 | 成人午夜激情影院| 成人国内精品久久久久一区| 亚洲女人天堂在线| 18成人在线观看| 日本毛片在线免费观看| 亚洲天堂成人网| 北岛玲一区二区三区| 国产亚洲视频在线观看| 亚洲婷婷伊人| 日韩国产欧美一区| 欧美国产97人人爽人人喊| 国产一级网站视频在线| 一个色综合导航| 婷婷丁香综合| 成人免费性视频| 婷婷一区二区三区| 666av成人影院在线观看| 国产精品精品视频| 国产一级精品在线| 色在线免费视频| 日韩中文在线视频| 午夜精品电影| 国产免费毛卡片| 欧美精品九九99久久| 亚洲国产高清在线观看| 久久国产精品久久| 国产精品欧美一区二区三区| 影音先锋在线播放| 欧洲成人免费aa| 韩国视频一区二区| 午夜影院在线免费观看| 不卡毛片在线看| 日韩高清不卡在线| 日本xxxx高清色视频| 在线电影中文日韩| 亚洲欧美日韩专区| 欧美变态视频| 久久免费少妇高潮久久精品99| 日韩专区一卡二卡| 天堂a√中文在线| 欧美精品第一页在线播放| 久久久精品性| 免费a在线观看| 97视频免费看| 99久久综合国产精品| 日韩专区av| 99精品国产一区二区| ...av二区三区久久精品| 日韩天堂在线| 色一情一乱一伦一区二区三欧美| 黄色一区二区在线| 国产精品久久久久久久久久白浆| 亚洲资源视频| 91精品一区二区三区久久久久久| 波多野结衣在线观看一区二区三区| 青青草原成人网| 日韩av在线免费看| 宅男噜噜噜66一区二区| 传媒在线观看| 日韩美女免费线视频| 亚洲国产精品v| 成人综合日日夜夜| www.av91| 亚洲欧美在线第一页| 全部av―极品视觉盛宴亚洲| 欧美天天影院| 久久久久一区二区三区| 色婷婷av一区二区三区大白胸| 日韩精品首页| 中国在线观看免费国语版电影 | 91久久精品在线| 亚洲私人黄色宅男| 成人爽a毛片免费啪啪红桃视频| 毛片在线视频播放| 国产亚洲欧美日韩一区二区| 国产激情一区二区三区四区| 在线看片福利| 国产在线xxxx| 中文字幕日韩在线观看| 成人精品鲁一区一区二区| yiren22亚洲综合| 黄色大片在线免费看| 日韩中文字幕在线精品| 91蜜桃视频在线| 一区二区三区国产好| 美女少妇一区二区| 日本精品久久久久影院| 亚洲成av人在线观看| 一区二区电影在线观看| 拍真实国产伦偷精品| 视频一区视频二区视频三区视频四区国产 | 丁香婷婷激情网| 性日韩欧美在线视频| 亚洲免费观看高清完整版在线观看 | 日本福利视频一区| 欧美大片免费观看在线观看网站推荐 | 国内精品久久国产| 日韩一区二区三区电影| 秋霞影院一区二区| 视频在线日韩| 国产精品视频黄色| 国产日韩欧美视频| 91精品国产色综合久久ai换脸| 国产曰批免费观看久久久| 精品自拍视频| 777永久免费网站国产| 91久久精品久久国产性色也91 | 成人在线视频成人| 亚洲一卡二卡三卡四卡无卡网站在线看| 日韩电影中文字幕一区| 91在线国产福利| 久久高清免费| 欧美hdxxx| 久久久久免费精品| 91黄在线观看| 亚洲天堂一区二区三区| 国产精品国产三级国产| 亚洲视频高清| 免费一级欧美在线观看视频| 国产污污在线观看| 亚洲一区二区精品在线观看| 久久亚洲私人国产精品va| 一区二区三区四区激情| 美女黄色成人网| 91精品短视频| 日本在线免费播放| 欧洲熟妇精品视频| 国产美女精品久久久| 日韩一区二区av| 一本到高清视频免费精品| 国产精品一区一区| 日韩一区欧美| 久久久久久久性潮| www.亚洲免费| 人人干人人干人人| 日本成人三级| 2025国产精品视频| 亚洲国产一区自拍| 亚洲成av人影院在线观看网| 东方欧美亚洲色图在线| 欧美在线不卡| 精品国模一区二区三区欧美| 婷婷免费在线视频| 中国免费黄视频| 亚洲av综合色区| 91视频网页| 91精品国产99久久久久久| 精品亚洲一区二区三区在线播放 | 日韩精品高清不卡| 日韩av有码|