使用 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 浏览器判断实现函数
Aug 20 Javascript
javascript学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
javascript中mouseover、mouseout使用详解
Jul 19 Javascript
readonly和disabled属性的区别
Jul 26 Javascript
JavaScript简单下拉菜单实例代码
Sep 07 Javascript
Javascript实现苹果悬浮虚拟按钮
Apr 10 Javascript
JavaScript实现汉字转换为拼音的库文件示例
Dec 22 Javascript
解析Vue2.0双向绑定实现原理
Feb 23 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
Dec 03 Javascript
js实现时间日期校验
May 26 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
对Session和Cookie的区分与解释
2007/03/16 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
PHP合并discuz用户脚本的方法
2015/08/04 PHP
PHP序列化操作方法分析
2016/09/28 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
2017/10/19 PHP
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JavaScript设置获取和设置属性的方法
2015/03/04 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
jquery学习笔记之无new构建详解
2017/12/07 jQuery
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
微信小程序sessionid不一致问题解决
2019/08/30 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
JS猜数字游戏实例讲解
2020/06/30 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
门卫班长岗位职责
2013/12/15 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
安全目标责任书
2014/07/22 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
详解Python类和对象内容
2021/06/22 Python
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
Tomcat弱口令复现及利用
2022/05/06 Servers