使用 vue 實現(xiàn)滅霸打響指英雄消失的效果附demo
寫在前面
滅霸打響指的消失效果。效果來源于 Google 搜索“滅霸” 或者 “thanos”。算是蹭熱度的一個 Feature, 我通過 F12 試圖去查看是如何實現(xiàn)的,也摳了一些音頻、圖片資源下來。后來在 github 上找到了一個現(xiàn)有的項目 Thanos_Dust, 所以參考了部分它的代碼。 其實它的代碼已經(jīng)算比較完善了,在它的基礎(chǔ)上,我用 vue 來寫了一下,加了一些英雄,修復(fù)了一些 bug ,加了一些效果之類的。
demo
- 點擊一下手套,伴隨音效和響指的動畫,會有一半的英雄消失。
- 消失之后,再點一下,消失的英雄又會回來。
可以點擊下面的鏈接體驗一下
細(xì)節(jié)
隨機(jī)選取一半的英雄,是通過下面的算法進(jìn)行選取的:
arr.sort(function() { return 0.5 - Math.random(); });
被選中的英雄灰飛煙滅的效果解釋:
- 使用
html2canvas
庫將每一個英雄所在的 dom 節(jié)點渲染為一個 canvas 節(jié)點 - 通過
generateFrames
方法,將整塊的 canvas 畫布圖像按像素分割成許多塊 - 創(chuàng)建一個跟選中的英雄所在的 dom 節(jié)點同一個位置、同樣的大小的容器覆蓋原 dom 節(jié)點
- 把第二步創(chuàng)建的塊繪制到新的畫布上,并都通過 appendChild 方法添加到第三步創(chuàng)建的父容器中
- 隨機(jī)設(shè)置每一塊的 rotate 角度和 translate 像素,就能完成灰飛煙滅的效果
- 將被覆蓋的英雄的 dom 節(jié)點設(shè)置為不可見的,就完成了響指操作。
翻轉(zhuǎn)時間,英雄又回來的效果是將原來的 dom 節(jié)點設(shè)置為可見的,并加了回復(fù)動畫。( google 的原版恢復(fù)動畫是將 color 設(shè)置為 green ,因為這里沒什么文字效果并不明顯,就設(shè)置成了 background-color
)
最后
整個過程其實跟 vue 沒什么關(guān)系,無論用什么前端技術(shù)棧都可以。以前也沒有接觸過 canvas ,似乎覺得還有點意思, 后面可能慢慢還會做一些改動,會繼續(xù)學(xué)習(xí) canvas 。最后附上github 地址.
總結(jié)
以上所述是小編給大家介紹的使用 vue 實現(xiàn)滅霸打響指英雄消失的效果附,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
vue使用ajax獲取后臺數(shù)據(jù)進(jìn)行顯示的示例
今天小編就為大家分享一篇vue使用ajax獲取后臺數(shù)據(jù)進(jìn)行顯示的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08在?Vite項目中使用插件?@rollup/plugin-inject?注入全局?jQuery的過程詳解
在一次項目腳手架升級的過程中,將之前基于?webpack?搭建的項目移植到?Vite?構(gòu)建,這篇文章主要介紹了在?Vite項目中,使用插件?@rollup/plugin-inject?注入全局?jQuery,需要的朋友可以參考下2022-12-12Vue源碼學(xué)習(xí)之初始化模塊init.js解析
本篇文章主要介紹了Vue源碼學(xué)習(xí)之初始化模塊init.js解析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11Vue使用codemirror實現(xiàn)一個可插入自定義標(biāo)簽的textarea
這篇文章主要為大家詳細(xì)介紹了Vue如何使用codemirror實現(xiàn)一個可插入自定義標(biāo)簽的textarea,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02vue組件傳值(高級)、屬性傳值、反向傳值、跨級傳值實例詳解
父組件通過屬性傳值給子組件,父組件修改數(shù)據(jù)后會刷新頁面并重新傳值給子組件,子組件可以修改父組件傳的值并刷新自己的頁面?但是并不會修改父組件中的值,這篇文章主要介紹了vue組件傳值(高級)、屬性傳值、反向傳值、跨級傳值,需要的朋友可以參考下2022-09-09