使用 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)文章
html中創(chuàng)建并調(diào)用vue組件的幾種方法匯總
這篇文章主要介紹了html中創(chuàng)建并調(diào)用vue組件的幾種方法匯總,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2020-11-11
解決Vue Loading PostCSS Plugin failed:Cann
這篇文章主要介紹了解決Vue Loading PostCSS Plugin failed:Cannot find module autoprefixer問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03
vue數(shù)據(jù)更新但視圖(DOM)不刷新的幾種解決辦法
這篇文章主要給大家介紹了關(guān)于vue數(shù)據(jù)更新但視圖(DOM)不刷新的幾種解決辦法,我們在開發(fā)過程中經(jīng)常會碰到數(shù)據(jù)更新,但是視圖并未改變的情況,需要的朋友可以參考下2023-08-08

