我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用html5 canvas实现图片玻璃碎片特效

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用html5 canvas实现图片玻璃碎片特效

小编给大家分享一下如何使用html5 canvas实现图片玻璃碎片特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

      html代码

    <imgclass="lazy" data-src=“city_copy.jpg”id=“class="lazy" data-src_img”class=“hidden”><divid=“container”style=“-webkit-perspective:500px;”><div><脚本class="lazy" data-src=“delaunay.js“></script><scriptclass="lazy" data-src=”TweenMax.min.js“></script>

    js代码:

//画布设置varimageWidth=768,imageHeight=485;var顶点=[],索引,方格=[];varimage,片段=[],容器=document.getElementById('container');window.onload=function(){image=document.getElementById('class="lazy" data-src_img');triangulate();makeBoxes();makeFragments();};函数triangulate(){varx,y,dx=imageWidth/8,dy=imageHeight/8,offset=0.5;对于(vari=0;i<=imageWidth;i+=dx){for(varj=0;j<=imageHeight;j+=dy){
    如果(i&&(i!==imageWidth))x=i+randomRange(-dx*offset,dx*offset);否则x=i;if(j&&(j!==imageHeight))y=j+randomRange(-dy*偏移量,dy*偏移量);否则y=j;vertices.push([x,y]);}}指数=Delaunay.triangulate(顶点);}函数makeBoxes(){varp0,p1,p2,xMin,xMax,yMin,yMax;for(vari=0;i<index.length;i+=3){p0=顶点[indices[i+0]];p1=顶点[索引[i+1]];p2=顶点[索引[i+2]];xMin=Math.min(p0[0],p1[0],p2[0]);xMax=Math.max(p0[0],p1[0],p2[0]);yMin=Math.min(p0[1],p1[1],p2[1]);
    yMax=Math.max(p0[1],p1[1],p2[1]);box.push({x:xMin,y:yMin,w:xMax-xMin,h:yMax-yMin});}}函数makeFragments(){VARP0,P1,P2,盒,片段;TweenMax.set(container,{Perspective:500});vartl0=newTimelineMax({repeat:-1});for(vari=0;i<index.length;i+=3){p0=顶点[indices[i+0]];p1=顶点[索引[i+1]];p2=顶点[索引[i+2]];box=box[i/3];片段=新片段(p0,p1,p2,box);varrx=randomRange(30,60)*((i%2)?1:-1);varry=randomRange(30,60)*((i%2)?-1:1);
    vartl1=newTimelineMax();TweenMax.set(fragment.canvas,{y:box.y-1000});tl1.to(fragment.canvas,randomRange(0.9,1.1),{y:box.y,ease:Back.easeOut});tl1.to(fragment.canvas,0.5,{z:-100,easy:Cubic.easeIn,delay:0.4});tl1.to(fragment.canvas,randomRange(1,1.2),{rotationX:rx,rotationY:ry,z:250,alpha:0,easy:Cubic.easeOut});tl0.insert(tl1);fragment.push(fragment);container.appendChild(fragment.canvas);}}函数randomRange(min,max){
    返回min+(max-min)*Math.random();}片段=函数(v0,v1,v2,框){this.v0=v0;this.v1=v1;this.v2=v2;this.box=盒子;this.canvas=document.createElement('canvas');this.canvas.width=this.box.w;this.canvas.height=this.box.h;this.canvas.style.width=this.box.w+'px';this.canvas.style.height=this.box.h+'px';this.ctx=this.canvas.getContext('2d');TweenMax.set(this.canvas,{x:this.box.x,y:this.box.y});this.ctx.translate(-this.box.x,-this.box.y);this.ctx.beginPath();this.ctx.moveTo(this.v0[0],this.v0[1]);
    this.ctx.lineTo(this.v1[0],this.v1[1]);this.ctx.lineTo(this.v2[0],this.v2[1]);this.ctx.closePath();this.ctx.clip();this.ctx.drawImage(image,0,0);};//@sourceURL=pen.js

以上是“如何使用html5 canvas实现图片玻璃碎片特效”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用html5 canvas实现图片玻璃碎片特效

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用CSS实现毛玻璃特效

这篇文章主要介绍“如何使用CSS实现毛玻璃特效”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用CSS实现毛玻璃特效”文章能帮助大家解决问题。一、backdrop-filter 是金手指吗?毛玻
2023-06-29

JavaScript利用canvas实现炫酷的碎片切图效果

这篇文章主要和大家分享一个炫酷的碎片式切图效果,本文主要利用canvas来实现,代码量不多,但有些地方还是需要花点时间去理解的,感兴趣的可以学习一下
2022-11-13

怎么在HTML5中使用Canvas实现一个破碎重组视频特效

本篇文章为大家展示了怎么在HTML5中使用Canvas实现一个破碎重组视频特效,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。HTML代码
2023-06-09

Android 图片特效如何实现及总结

Android 图形特效 最近公司项目,有一个需求是做图片特效的任务,自己写了代码实现特效,但是不是很好,上网搜了相关资料,整理了一下比较全面的Android 图片特效的资料,大家可以看下, 一.图形特效(一)特效
2022-06-06

使用Canvas怎么实现一个图片分割效果

本篇文章为大家展示了使用Canvas怎么实现一个图片分割效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先我们要初始化一些变量,比如图片的宽高,矩形的个数,剪切的尺寸等,然后再计算每个矩形的坐标
2023-06-09

编程热搜

目录