巧用 CSS 實現酷炫的充電動畫

程序員小樂 發佈 2020-01-21T15:18:58+00:00

每天凌晨00點00分, 第一時間與你相約 There is always that one person who can send you a text and cause you to smile instantly.

點擊上方 "程式設計師小樂"關注, 星標或置頂一起成長

每天凌晨00點00分, 第一時間與你相約


每日英文

There is always that one person who can send you a text and cause you to smile instantly.

總有那麼有一個人,他的一條簡訊就可以讓你立刻微笑。


每日掏心話

當時覺得很大壓力,後來回望,不過是多麼的微小。


來自:chokcoco | 責編:樂樂

連結:juejin.im/post/5e00240ee51d45583c1cc9a7

程式設計師小樂(ID:study_tech)第 753 次推文 圖片來自 Pexels


往日回顧:「公司年終獎發了個錘子!」你的年終獎發了嗎?別人家公司送房送車、現金、iPhone...


正文


循序漸進,看看只使用 CSS ,可以鼓搗出什麼樣的充電動畫效果。


畫個電池


當然,電池充電,首先得用 CSS 畫一個電池,這個不難,隨便整一個:



歐了,勉強就是它了。有了電池,那接下來直接充電吧。最最簡單的動畫,那應該是用色彩把整個電池灌滿即可。


方法很多,代碼也很簡單,直接看效果:



有內味了,如果要求不高,這個勉強也就能夠交差了。通過藍色漸變表示電量,通過色塊的位移動畫實現充電的動畫。但是總感覺少了點什麼。


增加陰影及顏色的變化


如果要繼續優化的話,需要添加點細節。


我們知道,低電量時,電量通常表示為紅色,高電量時表示為綠色。再給整個色塊添加點陰影的變化,呼吸的感覺,讓充電的效果看起來確實是在動。



知識點


到這裡,其實只有一個知識點:


  • 使用 filter: hue-rotate() 對漸變色彩進行色彩過渡變換動畫


我們無法對一個漸變色直接進行 animation ,這裡通過濾鏡對色相進行調整,從而實現了漸變色的變換動畫。


上述例子完整的 Demo:CodePen Demo -- Battery Animation One


添加波浪


ok,剛剛算一個小里程碑,接下來再進一步。電量的頂部為一條直線有點呆呆的感覺,這裡我們進行改造一下,如果能將頂部直線,改為波浪滾動,效果會更為逼真一點。


改造之後的效果:


使用 CSS 實現這種波浪滾動效果,其實只是用了一種障眼法,具體的可以我早期寫的這篇文章:


純 CSS 實現波浪效果!


知識點


這裡的一個知識點就是上述說的使用 CSS 實現簡易的波浪效果,通過障眼法實現,看看圖就明白了:


上述例子完整的 Demo:CodePen Demo -- Battery Animation Two

OK,到這,上述效果加上數字變化已經算是一個比較不錯的效果了。當然上面的效果看上去還是很 CSS 的,就是一眼看到就覺得用 CSS 是可以做到的。


使用強大的 CSS 濾鏡實現安卓充電動畫效果


那下面這個呢?



用安卓手機的同學肯定不陌生,這個是安卓手機在充電的時候的效果。看到這個我就很好奇,使用 CSS 能做到嗎?


經過一番嘗試,發現使用 CSS 也是可以很好的模擬這種動畫效果:



上述 Gif 錄製的效果圖是完全使用 CSS 模擬的效果。


上述例子完整的 Demo:HuaWei Battery Charging Animation


知識點


拆解一下知識點,最主要的其實是用到了 filter: contrast() 以及 filter: blur()這兩個濾鏡,可以很好的實現這種融合效果。

單獨將兩個濾鏡拿出來,它們的作用分別是:


  • filter: blur():給圖像設置高斯模糊效果。

  • filter: contrast():調整圖像的對比度。


但是,當他們「合體」的時候,產生了奇妙的融合現象。


先來看一個簡單的例子:

仔細看兩圓相交的過程,在邊與邊接觸的時候,會產生一種邊界融合的效果,通過對比度濾鏡把高斯模糊的模糊邊緣給幹掉,利用高斯模糊實現融合效果。

當然,這種效果在之前的文章也多次提及過,更具體的,可以看看:


  • CSS 火焰?不在話下

  • 你所不知道的 CSS 濾鏡技巧與細節


顏色的變換


當然,這裡也是可以加上顏色的變換,效果也很不錯:



上述例子完整的 Demo:HuaWei Battery Charging Animation


容易忽視的點


通過調節 filter: blur() 及 filter: contrast() 屬性的值,動畫效果其實會有很大程度的變化,好的效果需要不斷的調試。當然,經驗在其中也是發揮了很重要的作用,說到底還是要多嘗試。


最後


本文給出的幾個充電動畫,效果漸進增強,本文只指出了最核心的知識點。但是在實際輸出的過程中有很多小細節是本文沒有提及的,感興趣的同學還是應該點進 Demo 好好看看源碼或者自己動手實現一遍。


更多精彩 CSS 技術文章匯總在我的 Github -- iCSS ,持續更新,歡迎點個 star 訂閱收藏。


好了,本文到此結束,希望對你有幫助 :)


如果還有什麼疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。


歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。


猜你還想看


阿里、騰訊、百度、華為、京東最新面試題匯集

Java中關於try、catch、finally中的細節分析,看了都說好!

Google 開源的依賴注入庫,比 Spring 更小更快!

為什麼要看源碼?如何看源碼?高手進階必看!


關注「程式設計師小樂」,收看更多精彩內容
嘿,你在看嗎?


關鍵字: