使用 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 相关文章推荐
比较详细的javascript对象的property和prototype是什么一种关系
Aug 06 Javascript
jquery利用ajax调用后台方法实例
Aug 23 Javascript
js鼠标点击图片实现随机变换图片的方法
Feb 16 Javascript
JavaScript动态创建form表单并提交的实现方法
Dec 10 Javascript
浅谈js的url解析函数封装
Jun 28 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
jQuery 全选 全不选 事件绑定的实现代码
Jan 23 Javascript
JS中IP地址与整数相互转换的实现代码
Apr 10 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 Javascript
Javascript删除数组里的某个元素
Feb 28 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 Javascript
ES6 async、await的基本使用方法示例
Jun 06 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
FleaPHP的安全设置方法
2008/09/15 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
Jquery表单验证失败后不提交的解决方法
2016/10/18 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
layui+SSM的数据表的增删改实例(利用弹框添加、修改)
2019/09/27 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
Python脚本实现格式化css文件
2015/04/08 Python
Django如何配置mysql数据库
2018/05/04 Python
python实现大文件分割与合并
2019/07/22 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
优秀班集体获奖感言
2014/02/03 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
学校课外活动总结
2014/05/08 职场文书
员工自我评价范文
2015/03/11 职场文书
毕业答辩开场白范文
2015/05/27 职场文书
Java移除无效括号的方法实现
2021/08/07 Java/Android
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技