使用 vue 实现灭霸打响指英雄消失的效果附demo


Posted in Javascript onMay 06, 2019

写在前面

灭霸打响指的消失效果。效果来源于 Google 搜索“灭霸” 或者 “thanos”。算是蹭热度的一个 Feature, 我通过 F12 试图去查看是如何实现的,也抠了一些音频、图片资源下来。后来在 github 上找到了一个现有的项目 Thanos_Dust, 所以参考了部分它的代码。 其实它的代码已经算比较完善了,在它的基础上,我用 vue 来写了一下,加了一些英雄,修复了一些 bug ,加了一些效果之类的。

使用 vue 实现灭霸打响指英雄消失的效果附demo

使用 vue 实现灭霸打响指英雄消失的效果附demo

demo

  • 点击一下手套,伴随音效和响指的动画,会有一半的英雄消失。
  • 消失之后,再点一下,消失的英雄又会回来。

可以点击下面的链接体验一下

demos

使用 vue 实现灭霸打响指英雄消失的效果附demo

细节

随机选取一半的英雄,是通过下面的算法进行选取的:

arr.sort(function() {
 return 0.5 - Math.random();
});

被选中的英雄灰飞烟灭的效果解释:

  1. 使用 html2canvas 库将每一个英雄所在的 dom 节点渲染为一个 canvas 节点
  2. 通过 generateFrames 方法,将整块的 canvas 画布图像按像素分割成许多块
  3. 创建一个跟选中的英雄所在的 dom 节点同一个位置、同样的大小的容器覆盖原 dom 节点
  4. 把第二步创建的块绘制到新的画布上,并都通过 appendChild 方法添加到第三步创建的父容器中
  5. 随机设置每一块的 rotate 角度和 translate 像素,就能完成灰飞烟灭的效果
  6. 将被覆盖的英雄的 dom 节点设置为不可见的,就完成了响指操作。

翻转时间,英雄又回来的效果是将原来的 dom 节点设置为可见的,并加了回复动画。( google 的原版恢复动画是将 color 设置为 green ,因为这里没什么文字效果并不明显,就设置成了 background-color

最后

整个过程其实跟 vue 没什么关系,无论用什么前端技术栈都可以。以前也没有接触过 canvas ,似乎觉得还有点意思, 后面可能慢慢还会做一些改动,会继续学习 canvas 。最后附上github 地址.

总结

以上所述是小编给大家介绍的使用 vue 实现灭霸打响指英雄消失的效果附,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
Jun 18 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
javascript动态添加、修改、删除对象的属性与方法详解
Jan 27 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
关于vue.js发布后路径引用的问题解决
Aug 15 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
Feb 22 Javascript
vue 中滚动条始终定位在底部的方法
Sep 03 Javascript
Angular使用Restful的增删改
Dec 28 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
Sep 03 Javascript
关于JavaScript中异步/等待的用法与理解
Nov 18 Javascript
vue如何截取字符串
May 06 #Javascript
用vscode开发vue应用的方法步骤
May 06 #Javascript
微信小程序合法域名配置方法
May 06 #Javascript
手把手教你使用TypeScript开发Node.js应用
May 06 #Javascript
微信小程序上线发布流程图文详解
May 06 #Javascript
ES6的解构赋值实例详解
May 06 #Javascript
3分钟读懂移动端rem使用方法(推荐)
May 06 #Javascript
You might like
php 中文和编码判断代码
2010/05/16 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php简单中奖算法(实例)
2017/08/15 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
PHP token验证生成原理实例分析
2019/06/05 PHP
jQuery html()方法使用不了无法显示内容的问题
2014/08/06 Javascript
javascript模块化简单解析
2016/04/07 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
原生JS控制多个滚动条同步跟随滚动效果
2017/12/22 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
2018/12/10 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
Vue获取微博授权URL代码实例
2020/11/04 Javascript
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
CSS3 Pie工具推荐--让IE6-8支持一些优秀的CSS3特性
2014/09/02 HTML / CSS
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
详解html5 shiv.js和respond.min.js
2018/01/24 HTML / CSS
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
大学生会计职业生涯规划范文
2014/02/28 职场文书
我的教育故事演讲稿
2014/05/04 职场文书
白血病捐款倡议书
2014/05/14 职场文书
物理学专业自荐信
2014/06/11 职场文书
门面房租房协议书
2014/08/20 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书