vue canvas 方法无效_3 分钟,教会你如何用 Vue 实现 Google 搜索中灭霸的无限手套...

写在前面

灭霸打响指的消失效果。效果来源于 Google 搜索“灭霸” 或者 “thanos”。算是蹭热度的一个 Feature, 我通过 F12 试图去查看是如何实现的,也抠了一些音频、图片资源下来。后来在 github 上找到了一个现有的项目 Thanos_Dust(https://github.com/lichking24/Thanos_Dust), 所以参考了部分它的代码。 其实它的代码已经算比较完善了,在它的基础上,我用 vue 来写了一下,加了一些英雄,修复了一些 bug ,加了一些效果之类的。

d630df7c25c1beb6e42ce1dc5de3daed.png
082df9162fe5d52e8016366241a706bb.png

demo

  • 点击一下手套,伴随音效和响指的动画,会有一半的英雄消失。
  • 消失之后,再点一下,消失的英雄又会回来。

可以点击下面的链接体验一下

体验地址:https://yiliang114.github.io/vue-thanos-snap/index.html

6e7e8def993a02e45a3750e9323e81e7.gif

细节

  • 随机选取一半的英雄,是通过下面的算法进行选取的:
arr.sort(function() { return 0.5 - Math.random();});
  • 被选中的英雄灰飞烟灭的效果解释:
  1. 使用 html2canvas(http://html2canvas.hertzen.com/) 库将每一个英雄所在的 dom 节点渲染为一个 canvas 节点
  2. 通过 generateFrames(https://github.com/yiliang114/vue-thanos-snap/blob/master/src/components/Main.vue/#L117) 方法,将整块的 canvas 画布图像按像素分割成许多块
  3. 创建一个跟选中的英雄所在的 dom 节点同一个位置、同样的大小的容器覆盖原 dom 节点
  4. 把第二步创建的块绘制到新的画布上,并都通过 appendChild 方法添加到第三步创建的父容器中
  5. 随机设置每一块的 rotate 角度和 translate 像素,就能完成灰飞烟灭的效果
  6. 将被覆盖的英雄的 dom 节点设置为不可见的,就完成了响指操作。
  • 翻转时间,英雄又回来的效果是将原来的 dom 节点设置为可见的,并加了回复动画。( google 的原版恢复动画是将 color 设置为 green ,因为这里没什么文字效果并不明显,就设置成了 background-color )

最后

整个过程其实跟 vue 没什么关系,无论用什么前端技术栈都可以。以前也没有接触过 canvas ,似乎觉得还有点意思, 后面可能慢慢还会做一些改动,会继续学习 canvas 。最后附上 github 地址(https://github.com/yiliang114/vue-thanos-snap).

版权

作者:yiliang

链接:https://juejin.im/post/5ccd68f0f265da039e2001c5

著作权归作者所有。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380655.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Google 灭霸小彩蛋,惊艳了~

点击关注上方“五分钟学算法”,设为“置顶或星标”,第一时间送达干货。 漫威大作《复仇者联盟4》正在全球各地热映,寻找小彩蛋肯定是一大乐趣,喜欢搞事的 Google 这次也不例外,做了一个十分酷炫的彩蛋。 只要在谷歌的搜…

python灭霸的响指

python灭霸的响指 闲来无事,做了个简单的snap小程序。可以在指定地点(C盘 )打响指,随机消灭一半的文件。自己试了试,感觉还蛮好玩。不多说了,我要赶紧抢救系统文件了。 import os import shutil import …

灭霸的响指并不是真随机消灭半数宇宙人口的!

周末,陪女朋友去电影院看了《复仇者联盟4:终局之战》,作为一个漫威粉三个小时看的是意犹未尽。出来之后,准备和女朋友聊一聊漫威这十年。 在《复仇者联盟》电影中,灭霸毕生都有一个目标,那就是通过抹除一半…

十分钟实现灭霸打响指灰飞烟灭的效果,android路由器app

//处理canvas的代码 const ctx = canvas.getContext(‘2d’); const imageData = ctx.getImageData( 0, 0, canvas.width, canvas.height ); const pixelArr = imageData.data; //像素信息 图像信息被存储在一个Uint8ClampedArray(8位无符号整型固定数组)中,这个数…

Chrome 灭霸打响指彩蛋动画 Android实现

github地址 在手机chrome搜索灭霸后,会出现一个手套的图片,点击图片后会出现一个彩蛋,即一半的搜索结果会消失。消失的动画如下图所示: 可以看到这个动画 大致可以理解为:将当前view分为两份,每一份同时…

Vue灭霸打响指效果

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/GreekMrzzJ/article/details/89821464 </div><link rel"stylesheet" href"https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_v…

什么是P2P?

P2P (Peer-to-Peer) 是一种分布式的网络架构&#xff0c;其中各个节点&#xff08;通常被称为“peers”或“节点”&#xff09;直接进行数据共享和交换&#xff0c;而无需依赖中央服务器。P2P 网络强调平等的参与和共享&#xff0c;每个节点既可以是数据的消费者&#xff08;下…

探秘金和OA:解析任意文件读取漏洞的潜在威胁

是喜是悲&#xff0c;但可以慰藉的是&#xff0c;你总不枉在这世界上活了一场&#xff0c;有了这样的认识&#xff0c;你就会珍重生活&#xff0c;而不会玩世不恭&#xff1b;同时也会给人自身注入一种强大的内在力量…… 漏洞复现 访问url&#xff1a; 构造payload /C6/Jh…

教师节,回忆一点(更新完毕)

又到了一年一度的教师节&#xff0c;身处塞北&#xff0c;回想当年&#xff0c;师恩难忘。让点点滴滴的回忆伴我回到学校。 小学的时候&#xff0c;一般只记得老师的姓&#xff0c;不会去问全名&#xff0c;更不会去叫。所以只记得几位老师的姓。一二年级时的班主任姓孙&#x…

Vue过滤器(时间戳转时间)

目录 过滤器 HTML写法&#xff1a; 定义过滤器: 定义全局过滤器&#xff1a; 过滤器串联&#xff1a; 带参数过滤器&#xff1a; 时间戳转时间 过滤器 官方地址&#xff1a;过滤器 — Vue.js (vuejs.org) 过滤器是指Vue.js支持在{{}}插值的尾部添加一个管道符“&#xff0…

人与树林交相辉映的效果

人与树林交相辉映的效果 效果 1.利用通道抠出人物素材&#xff0c;复制背景图层&#xff0c;在通道复制一个蓝色通道图层&#xff0c;调整色阶让黑的更黑一点&#xff0c;白的更白&#xff0c;然后用画笔工具把黑的人物全部涂黑 2.按Ctrl键鼠标左键选中图片&#xff0c;然后按…

qt画笔效果笔锋:铅笔、画笔、钢笔、毛笔、蜡笔

qt画笔效果笔锋&#xff1a;铅笔、画笔、钢笔、毛笔、蜡笔体验 体验demo下载连接&#xff1a;https://download.csdn.net/download/u012532263/87740902?spm1001.2014.3001.5501 emil: 550993637qq.com

Android 仿支付宝蚂蚁森林动画效果

Android 动画可以归纳为以下几种&#xff1a; 视图动画&#xff08;View 动画&#xff09;帧动画&#xff08;Frame 动画、Drawable 动画&#xff09;属性动画触摸反馈动画&#xff08;Ripple Effect&#xff09;揭露动画&#xff08;Reveal Effect&#xff09;转场动画 &…

Babylongjs-高度图,天空盒,图片精灵及K帧动画

我们想把村庄建在山谷里。可以从网格创建山丘&#xff0c;但是还有另一种方法可以为地面网格添加垂直高度。这是使用高度图来实现的&#xff0c;该高度图使用灰色阴影来确定地面的高度。白色区域最高&#xff0c;黑色最低。这个简单的高度图&#xff1a; 中间有一个大的黑色区域…

「Python海龟画图」利用海龟画笔绘制分形树

绘制旋转图形 功能要求 利用函数递归绘制由多条直线组成的旋转图形&#xff0c;每条直线的颜色随机产生&#xff1b;并且隐藏画笔、设置画笔的速度、设置画布的背景色。 实例代码 import turtle # 导入海龟模块import random # 导入随机数turt…

qpython3手机版turtle_使用Python turtle画一片树林

原标题&#xff1a;使用Python turtle画一片树林 使用Python Turtle绘制一片树林代码 这段代码结合了随机函数来使树林更多样化&#xff0c;同时设置了颜色的渐变。几乎每句都有注释&#xff0c;还有不懂的函数可以到官方手册查 示例中的yield语句和pass语句的用法非常精髓&…

DC电源模块关于的电路布局设计

BOSHIDA DC电源模块关于的电路布局设计 DC电源模块是现代电子设备中常用的电源模块之一&#xff0c;其功能是将市电或其他输入电源转换成定电压、定电流的直流电源输出&#xff0c;以满足电子设备的供电需求。电路布局的设计是DC电源模块的重要组成部分&#xff0c;它直接影响…

chrome V3 插件开发 基础

目录 准备popup通信popup 发消息给 backgroundpopup 发消息给 content长期连接 如何页面上添加一个按钮&#xff1f;tabs.onUpdatedcontent-script.jsinject.js 右键菜单chrome.contextMenus举个例子添加关于报错&#xff08;cannot create item with duplicate id XXX&#xf…

论如何科学的看小本子

看本子的问题一直困扰着很多人&#xff0c;有些需要注册&#xff0c;有些没有资源&#xff0c;有些广告很多。 这里&#xff0c;推荐一款用起来比较好的本子应用。 大概长这个样子 这个东西怎么用&#xff1f;我不知道。 这个东西能干什么&#xff1f;我也不知道。 但是&am…

STM32入门——DMA数据搬运工

DMA简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输&#xff0c;无须CPU干预&#xff0c;节省了CPU的资源12个独立可配置的通道&#xff1a; DMA1&#xff08;7个通道&#xff09;&#xff…