使用 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 相关文章推荐
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
JQuery 使用attr方法实现下拉列表选中
Oct 13 Javascript
Javascript中arguments对象详解
Oct 22 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
Feb 16 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
Mar 22 Javascript
React-router中结合webpack实现按需加载实例
May 25 Javascript
vue中使用input[type="file"]实现文件上传功能
Sep 10 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
Mar 07 Javascript
javascript 代码是如何被压缩的示例代码
May 06 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
Aug 04 Javascript
JavaScript this关键字的深入详解
Jan 14 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 Http_Template_IT类库进行模板替换
2009/03/19 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
js调试工具 Javascript Debug Toolkit 2.0.0版本发布
2008/12/02 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
jQuery知识点整理
2015/01/30 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
angular 实现同步验证器跨字段验证的方法
2019/04/11 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
Vue+abp微信扫码登录的实现代码示例
2020/01/06 Javascript
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例
2018/03/22 Python
python实现简单http服务器功能
2018/09/17 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
实例详解Python模块decimal
2019/06/26 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
德国综合购物网站:OTTO
2018/11/13 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
威盛公司软件C++工程师笔试题面试题
2012/07/16 面试题
司马光教学反思
2014/02/01 职场文书
捐书活动倡议书
2015/04/27 职场文书
Python中time标准库的使用教程
2022/04/13 Python