html5图片碎片效果,html5 canvas实现图片玻璃碎片特效

今天要为大家带来一款html5 canvas实现的图片玻璃碎片特效。图片以玻璃碎片的形式出现到界面中,然后似玻璃被打碎的效果渐消息。效果图如下:

47090089046f2268032f1d18f26438f4.png

实现代码:

html代码:

js代码:

// canvas settings

var imageWidth = 768,

imageHeight = 485;

var vertices = [],

indices,

boxes = [];

var image,

fragments = [],

container = document.getElementById('container');

window.onload = function () {

image = document.getElementById('src_img');

triangulate();

makeBoxes();

makeFragments();

};

function triangulate() {

var x,

y,

dx = imageWidth / 8,

dy = imageHeight / 8,

offset = 0.5;

for (var i = 0; i <= imageWidth; i += dx) {

for (var j = 0; j <= imageHeight; j += dy) {

if (i && (i !== imageWidth)) x = i + randomRange(-dx * offset, dx * offset);

else x = i;

if (j && (j !== imageHeight)) y = j + randomRange(-dy * offset, dy * offset);

else y = j;

vertices.push([x, y]);

}

}

indices = Delaunay.triangulate(vertices);

}

function makeBoxes() {

var p0, p1, p2,

xMin, xMax,

yMin, yMax;

for (var i = 0; i < indices.length; i += 3) {

p0 = vertices[indices[i + 0]];

p1 = vertices[indices[i + 1]];

p2 = vertices[indices[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]);

boxes.push({

x: xMin,

y: yMin,

w: xMax - xMin,

h: yMax - yMin

});

}

}

function makeFragments() {

var p0, p1, p2,

box,

fragment;

TweenMax.set(container, { perspective: 500 });

var tl0 = new TimelineMax({ repeat: -1 });

for (var i = 0; i < indices.length; i += 3) {

p0 = vertices[indices[i + 0]];

p1 = vertices[indices[i + 1]];

p2 = vertices[indices[i + 2]];

box = boxes[i / 3];

fragment = new Fragment(p0, p1, p2, box);

var rx = randomRange(30, 60) * ((i % 2) ? 1 : -1);

var ry = randomRange(30, 60) * ((i % 2) ? -1 : 1);

var tl1 = new TimelineMax();

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,

ease: Cubic.easeIn,

delay: 0.4

});

tl1.to(fragment.canvas, randomRange(1, 1.2), {

rotationX: rx,

rotationY: ry,

z: 250,

alpha: 0,

ease: Cubic.easeOut

});

tl0.insert(tl1);

fragments.push(fragment);

container.appendChild(fragment.canvas);

}

}

function randomRange(min, max) {

return min + (max - min) * Math.random();

}

Fragment = function (v0, v1, v2, box) {

this.v0 = v0;

this.v1 = v1;

this.v2 = v2;

this.box = 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

201603282312454295.jpg

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

清华大学 现代软件工程 结对编程项目 (一)

Pair Project I: Casual Game Improve an existing casual game with incremental innovation. Skills to Practice and Learn: a) Requirement Collection & Analysis b) Estimation c) Pair Programming (结对编程) d) Collaboration How to …

HTML用户点击新建按钮,html – 需要点击按钮

该页面上有两个解决方案。如果可能的话&#xff0c;我会选择较低的票数。如果你使用HTML5&#xff0c;那么把div放在一个内部是完全有效的。只要div还不包含其他特定元素&#xff0c;如其他链接标签。Music I Like实际上&#xff0c;您所困惑的解决方案使链接与其容器div一样大…

Visual Studio 2010 sp1

http://blogs.msdn.com/b/jasonz/archive/2011/03/08/announcing-visual-studio-2010-service-pack-1.aspx 各位同学可以下载。 我很佩服VS 团队的同事在繁忙的工作之余&#xff0c;还能在 blog 上直接和最终用户交流。 从大家对Vs2010 的反馈来看 (有100 多个反馈帖子), 如…

cocos html5 一直在加载失败,项目进行中的小问题-0426-【Cocos2d-html5】初识Cocos2d-html5-一些移动端浏览器的兼容性Bug_169IT.COM...

背景与前言现在什么技术火&#xff1f;Android&#xff0c;ios&#xff0c;HTML5&#xff0c;人工智能&#xff0c;云计算……如此多的技术&#xff0c;而且发展非常快&#xff0c;大家都很迷茫&#xff0c;到底要学什么呢&#xff1f;我也很迷茫&#xff0c;只能走一步算一步。…

software engineering homework, product analysis

我们往往抱怨年轻人做的不够好, 其实如果你给他们鼓励, 告诉他们你的期望, 他们往往能做到, 甚至做得更好, 软件工程课的作业: http://sinaurl.cn/ht4qWO http://sinaurl.cn/htdEUX http://sinaurl.cn/hbeWBI http://sinaurl.cn/ht4C7z http://sinaurl.cn/htBRbm

html设置了标签但是定义不了,在HTML标签管理器中设置不带元素ID的HTML中的事件...

这取决于你想要采取的路线。但是&#xff0c;无论路线如何&#xff0c;您绝对需要标识表单和/或提交按钮的内容。它不需要是一个ID&#xff0c;但它是理想的&#xff0c;如果有一个唯一的包装类或ID。您可以跟踪点击提交按钮&#xff0c;但是&#xff0c;您的号码不会完全准确。…

软件工程 之 动物世界

在一个神奇的国度里生活着许多动物, 其中有猪, 鸡, 和鹦鹉。 它们每天搞头脑风暴, 琢磨如何创业, 最后鹦鹉提议它们合伙开一个早餐店: 具体分工如下: 猪: 提供猪肉, 做熏猪肉 (bacon) 鸡: 提供鸡蛋, 做煎蛋 鹦鹉: 提供咨询, 它会每天阅读大量博客, 给其他团队成员提供建议, …

计算机应用基础教材6,全国2013年自考《计算机应用基础》教材大纲第六章

第 6 章 计算机网络基础知识(一)课程内容第 1 节 计算机网络基本概述第 2 节 因特网(Internet)及其应用第 3 节 用IE浏览网页第 4 节 电子邮件的使用第 5 节 计算机网络的安全(二)学习目的与要求通过本章学习&#xff0c;了解计算机网络的一些基础知识&#xff1b;熟悉因…

现代软件工程 电梯调度的挑战

目录 2022 年对 《开源软件开发导论》项目的要求 以前的需求文档 电梯作业的挑战和参考 1. Background - pair programming exercise 2. Requirement to Student pairs 2.5 Explanation of BUS program: 3. Testing 参考文献 2022 年对 《开源软件开发导论》项目的要求…

美国大学计算机专业排名2014,2014年美国大学本科计算机专业排名

下面是最新发布的2013年美国大学本科排名的相关信息&#xff0c;包括了进入榜单所有学校的相关信息。USNews美国大学排名是最具权威性的大学排名之一&#xff0c;下面我们一起来看看美国大学本科排名的信息吧。1 Massachusetts Institute of Technology麻省理工学院2 Carnegie …

我的原创,思考写作时间在1小时以上,希望读者有真正收获的博客

[今天注意到博客园信箱里有几封信, 其中一封是这个] 原来我的原创&#xff0c;思考写作时间在1小时以上&#xff0c;希望读者有真正收获的博客被认为是不符合要求, 从首页上移出了。 这让我在写这篇博客的时候看了表, 保证思考时间超过了一个小时, 然后才发表。 这是一些读者的…

计算机网络教室任课教师登记表,多媒体教室工作计划

在本学期&#xff0c;我校将以提高教师应用技能为中心&#xff0c;采取各种方法&#xff0c;着力建设信息技术教育师资队伍和管理队伍&#xff1b;以信息网络建设为枢纽&#xff0c;充分利用信息网络资源&#xff0c;服务于教学&#xff1b;以课堂整合模式改革为突破&#xff0…

软件工程 软件工程师的誓言

有人说 程序 算法 数据结构 有人说 软件 程序 软件工程, 软件企业 软件 商业模式。 程序本身没有伦理和职业道德, 但是程序员和软件企业要有。 我们听说过很多例子: 一个在银行工作的程序员曾说, 每次给客户计算利息的时候那些除不尽的小数, 如果程序自动转给我的账…

计算机专业性特有的道德要求,什么是通信科学技术人员职业道德的双重性?

做人素质/道德底线/正反例举计算机专业人员的职业道德和行为准则计算机职业作为一种不同于其它职业的特殊职业&#xff0c;它有着自己与众不同的职业道德和行为准则&#xff0c;这些职业道德和行为准则是每一个计算机职业人员都要共同遵守的。1、 职业道德概念所谓职业道德&…

软件工程 软件的估计为什么这么难

前两年在网上看到一个笑话集锦, 列举电视剧中的穿帮情节。 其中一个是在某缠绵冗长的言情剧中, 一个叫 “书桓” 的角色沉痛地说 - “长达八年的抗日战争就要开始了…” 书桓同学当时是怎么估计到抗日战争要打八年的? 这一技术让软件工程师和项目经理望尘莫及。 软件项目计…

java php html,java和html的区别是什么

区别&#xff1a;1、HTML主前端&#xff0c;呈现数据&#xff0c;Java主处理加工数据。2、JAVA主要用于桌面应用程序和分布式网络应用程序的开发&#xff1b;HTML用于前端页面的开发。3、JAVA的运行环境是JDK和WEB服务器&#xff0c;HTML的运行环境是浏览器。本教程操作环境&am…

软件工程 估计方法

上回书说到 - 一个小组的同学 (6-8 人) 决定要徒步遍历中国陆地边界, 假设供给装备齐全, 估计需要多长时间? 用什么样的办法能让同学们方便地交流各自的估计, 最后到达大致理性和统一的共识? 一般这个时候教室里一定非常热闹, 大家各抒己见, 争执得不亦乐乎。 但是最后往往…

徐海学院计算机专业好吗,2019中国矿业大学徐海学院专业排名

中国矿业大学徐海学院是中国矿业大学以新机制举办的独立学院&#xff0c;成立于1999年&#xff0c;2003年经教育部批准作为独立学院办学&#xff0c;是江苏省最早批准办学的独立学院之一。为了让大家更好的了解这所大学的专业排名&#xff0c;下面是学习啦小编给大家带来的中国…

软件工程 团队博客分数 (第一阶段)

正如我在学期开始的时候跟大家介绍的那样, 如果所有团队都做同样的事情, 那么分数就采用 1/n 的体系。 第一名得满分, 第二名得 1/2 的分数, 第三名得 1/3 的分数… 大家都在一个地方写博客, 项目都是同样有趣, 所以我们采用 1/n 体系, 满分 20 分. 第一组&#xff1a; Seven…

高中学生计算机软件,中学生计算器

一款非常实用好用的手机计算器软件中学生计算器分享给大家强大的软件&#xff0c;完美快捷的输入方式&#xff0c;中学生计算器app拥有很多函数公式计算功能&#xff0c;让你完美的完成各种考试作业的计算&#xff0c;功能多多。中学生计算器软件介绍隐私计算器app是一款比自带…