使用 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.ui.dialog 增加“在当前鼠标位置打开”的功能
Nov 24 Javascript
jQuery EasyUI 中文API Button使用实例
Apr 14 Javascript
jquery 事件对象属性小结
Apr 27 Javascript
Vue.js每天必学之组件与组件间的通信
Sep 08 Javascript
js中获取键盘事件的简单实现方法
Oct 10 Javascript
js实现3D图片环展示效果
Mar 09 Javascript
老生常谈js-react组件生命周期
May 02 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
Aug 17 jQuery
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
Vue.js实现的购物车功能详解
Jan 27 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
js正则匹配markdown里的图片标签的实现
Mar 24 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JavaScript实现动态删除列表框值的方法
2015/08/12 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
JS实现页面打印(整体、局部)
2017/08/18 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
node静态服务器实现静态读取文件或文件夹
2019/12/03 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python 25行代码实现的RSA算法详解
2018/04/10 Python
python实现比较文件内容异同
2018/06/22 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
详解基于python的图像Gabor变换及特征提取
2020/10/26 Python
python中的unittest框架实例详解
2021/02/05 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
学校后勤人员职责
2013/12/27 职场文书
本科生的职业生涯规划范文
2014/01/09 职场文书
安全保证书怎么写
2015/02/28 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android