最近在學(xué)習(xí) HarmonyOS 開(kāi)發(fā)文檔,發(fā)現(xiàn) transform 樣式動(dòng)畫(huà)感覺(jué)很有趣,于是打算用現(xiàn)有的方法寫(xiě)一個(gè)會(huì)動(dòng)的充電效果。

繪制電池輪廓
實(shí)現(xiàn)過(guò)程如下:首先我們使用 css 畫(huà)電池,繪制一個(gè)長(zhǎng)方形需要給這個(gè)正方形四個(gè)角增加一點(diǎn)點(diǎn)的弧度,再給電池畫(huà)一個(gè)頭部,只有一個(gè)電池的輪廓就出來(lái)了,我在里面增添了一點(diǎn)顏色方便后面觀察。
首先繪制一個(gè)電池:

然后增加個(gè) div 來(lái)實(shí)現(xiàn)動(dòng)畫(huà)效果,這個(gè)我打算用蒙版來(lái)處理,蒙版不需要增加太多細(xì)節(jié)寬高和藍(lán)色 div 一樣就行,然后通過(guò) overflow: hidden 來(lái)實(shí)現(xiàn)蒙版效果,接下來(lái)就是讓白色 div 動(dòng)起來(lái)就行了。
<imgsrc=“./電池遮罩.png”alt=“電池遮罩”style=“zoom:67%;”/>
電池動(dòng)畫(huà)效果
需要使電池出現(xiàn)一個(gè)充電的效果,這時(shí)候就需要使用一個(gè)讓電池電量上升的一個(gè)效果,這個(gè)用平移動(dòng)畫(huà)就夠了,如果加蒙版屬性的話(huà)會(huì)更好一點(diǎn)。
.mask2{
position:absolute;
height:220px;
width:140px;
left:50%;
transform:translate(-50%,50%);
border-radius:15px15px5px5px;
background:linear-gradient(#7abcff,#2196F3);
overflow:hidden;
}
電池漸變:
background:linear-gradient(#7abcff,#2196F3);
蒙版效果:
overflow:hidden;
.mask3{
position:absolute;
width:150px;
height:220px;
bottom:140px;
left:50%;
transform:translate(-50%,-80);
z-index:1;
animation:down6sfast-out-linear-ininfinite;
background-color:#ffffff;
}
電池平移動(dòng)畫(huà):
animation:down6sfast-out-linear-ininfinite;
/*css彈跳*/
@keyframesdown{
/*停止*/
0%{
transform:translate(0px,200px);
}
/*上升*/
10%{
transform:translate(0px,180px);
}
/*上升*/
20%{
transform:translate(0px,160px);
}
/*上升*/
30%{
transform:translate(0px,140px);
}
/*上升*/
40%{
transform:translate(0px,120px);
}
/*上升*/
50%{
transform:translate(0px,100px);
}
/*上升*/
60%{
transform:translate(0px,80px);
}
/*上升*/
70%{
transform:translate(0px,60px);
}
/*上升*/
80%{
transform:translate(0px,40px);
}
/*上升*/
90%{
transform:translate(0px,20px);
}
/*起始位*/
100%{
transform:translate(0px,0px);
}
}
百分百給的越多動(dòng)畫(huà)就越細(xì)膩。
拓展1
如下圖:

如果需要使電池充電時(shí)進(jìn)行旋轉(zhuǎn)也是可以的,只需要把平移效果換成旋轉(zhuǎn)就可以了。
.mask3{
position:absolute;
width:150px;
height:150px;
bottom:140px;
left:50%;
transform:translate(-50%,0);
z-index:1;
animation:rotate4sinfinite;
border-radius:70px63px60px66px;
background-color:#ffffff;
}
旋轉(zhuǎn)動(dòng)畫(huà):
animation:rotate4sinfinite;
/*css旋轉(zhuǎn)*/
@keyframesrotate{
from{
transform:rotate(0deg)
}
to{
transform:rotate(360deg);
}
}
拓展2
也可以通過(guò)添加按鈕來(lái)增加可改變的顏色樣式,首先需要把 css 中的顏色樣式給移到 js 中這樣方便后面的切換,然后在 js 中寫(xiě)入需要替換的電池顏色樣式。

代碼如下:
class="mask1">
class="mask4">
class="mask2"value="{{qr_value}}"type="{{qr_type}}" style="background-color:{{gradualChange}};">
class="mask3"value="{{qr_value}}"type="{{qr_type}}" style="background-color:{{baseColor}};">
class="txt">電池剩余色 <selectonchange="remainingColor"> for="{{remaining}}"value="{{$item}}">{{$item}} select>
data:{
baseColor:'#f0ffff',
gradualChange:'#87ceeb',
remaining:['#87ceeb','#fa8072','#da70d6','#80ff00ff','#2196F3'],
load:['#f0ffff','#ffffe0','#d8bfd8']
},
最終的效果如下圖:
總結(jié)
這些還只是Harmony組件庫(kù)中動(dòng)畫(huà)樣式里的一小部分,如果再使用旋轉(zhuǎn)加平移屬性就能實(shí)現(xiàn)更加炫酷的動(dòng)畫(huà)效果,能夠帶來(lái)更好的視覺(jué)體驗(yàn),組件庫(kù)中還有著許多有趣的組件實(shí)例和詳細(xì)的使用方法,掌握這些組件的使用可以使我們更好的了解和參與Harmony。
作者:湯志威
原文標(biāo)題:在HarmonyOS上寫(xiě)一個(gè)會(huì)動(dòng)的充電效果
文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
充電
+關(guān)注
關(guān)注
23文章
1392瀏覽量
96395 -
電池
+關(guān)注
關(guān)注
84文章
11081瀏覽量
135068 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2126瀏覽量
33082
原文標(biāo)題:在HarmonyOS上寫(xiě)一個(gè)會(huì)動(dòng)的充電效果
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
聯(lián)想G490筆記本電池不充電
請(qǐng)推薦一個(gè)無(wú)涓流充電的鋰電池充電芯片。
充電寶的電池換了一個(gè)不同容量的電池出現(xiàn)電路板發(fā)熱?請(qǐng)老師給講解一下,先謝謝了!
電池充電器的反向電壓保護(hù)
電池充電IC電路設(shè)計(jì)基礎(chǔ)
基于HarmonyOS實(shí)現(xiàn)的電池充電動(dòng)畫(huà)效果
esp8266充電電池的問(wèn)題求解
使用MAX8934設(shè)計(jì)一個(gè)簡(jiǎn)單的電池充電器
為什么蓄電池修復(fù)效果查詢(xún)會(huì)出現(xiàn)負(fù)數(shù)
電池協(xié)會(huì)動(dòng)力鋰電池技術(shù)協(xié)作與推廣應(yīng)用委員會(huì)在昆山成立
一個(gè)設(shè)計(jì)師的指導(dǎo)(李鋰離子)電池的充電

如何設(shè)計(jì)一個(gè)基于MPPT的鉛酸電池充電器與BQ2031電池充電器

評(píng)論