使用 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 表单验证扩展(三)
Oct 20 Javascript
关于js new Date() 出现NaN 的分析
Oct 23 Javascript
js 获取input点选按钮的值的方法
Apr 14 Javascript
js鼠标悬浮出现遮罩层的方法
Jan 28 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
JS传值出现中文参数乱码的解决方法
Jun 30 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
使用Ajax和Jquery配合数据库实现下拉框的二级联动的示例
Jan 25 jQuery
JS设计模式之策略模式概念与用法分析
Feb 05 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 Javascript
Node.JS如何实现JWT原理
Sep 18 Javascript
使用Vue实现一个树组件的示例
Nov 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
PHP.MVC的模板标签系统(一)
2006/09/05 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
php通过递归方式复制目录和子目录的方法
2015/03/13 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
yii框架数据库关联查询操作示例
2019/10/14 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
JavaScript开发时的五个注意事项
2007/12/08 Javascript
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
React.Js添加与删除onScroll事件的方法详解
2017/11/03 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
微信小程序实现顶部导航特效
2019/01/28 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
Python文件读写保存操作的示例代码
2018/09/14 Python
python字符串Intern机制详解
2019/07/01 Python
Django如何简单快速实现PUT、DELETE方法
2019/07/24 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
2020/09/03 Python
用Python进行websocket接口测试
2020/10/16 Python
解决H5的a标签的download属性下载service上的文件出现跨域问题
2019/07/16 HTML / CSS
机电一体化大学生求职信
2013/11/08 职场文书
销售文员的岗位职责
2013/11/20 职场文书
电子商务自荐书范文
2014/01/04 职场文书
银行开业庆典方案
2014/02/06 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
关于远足的感想
2015/08/10 职场文书
小学英语听课心得体会
2016/01/14 职场文书
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS