使用 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 密码强度判断代码
Sep 05 Javascript
JQuery+DIV自定义滚动条样式的具体实现
Jun 25 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
Dec 20 Javascript
基于jquery实现轮播焦点图插件
Mar 31 Javascript
Bootstrap每天必学之折叠(Collapse)插件
Apr 25 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
微信小程序中setInterval的使用方法
Sep 29 Javascript
vue加载自定义的js文件方法
Mar 13 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
May 15 Javascript
vue实现购物车加减
May 30 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
window.event.keyCode兼容IE和Firefox实现js代码
2013/05/30 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
轻松实现js选项卡切换效果
2016/09/24 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
360提示[高危]使用存在漏洞的JQuery版本的解决方法
2017/10/27 jQuery
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
英国健身专家:WIT Fitness
2021/02/09 全球购物
介绍一下SQL注入攻击的种类和防范手段
2012/02/18 面试题
大专应届生个人的自我评价
2013/11/21 职场文书
安全责任书范本
2014/04/15 职场文书
装修活动策划方案
2014/08/27 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
教师岗位职责
2015/02/03 职场文书
python如何获取网络数据
2021/04/11 Python
Django利用AJAX技术实现博文实时搜索
2021/05/06 Python
Java如何实现通过键盘输入一个数组
2022/02/15 Java/Android
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android