烟花效果如下(请使用支持HTML5的浏览器查看):
点击这里查看效果:http://keleyi.com/keleyi/phtml/html5/14.htm

源代码如下:

 <style>canvas{background-color:#000000;;z-index:9999;}</style>
<canvas id="canvas-keleyi-com"></canvas>
<script>
var c = document.getElementById('canvas-ke'+'leyi-com');
if (!c.getContext) alert('请使用支持HTML5的浏览器,例如Chrome,IE9以上。');
else(function(c, cvs) {
//随着窗口调整画布大小
var W, H;
var up = 0;
//(onresize = function() {
// c.width = W = window.innerWidth;
// c.height = H = window.innerHeight;
// })();
c.width=W=616;
c.height=H=400;
//生成一个烟花
function createPT(x, y, r, g, b) {
return {
r: r,g: g,b: b,
x: x,y: y,
//轨迹序列
pl: [],
dx: rnd(20) - 10,
dy: rnd(10) - 7,
life: 30 + rnd(30),
//移动函数,修改加速度和坐标
move: function() {
this.dx *= .98;
this.dy *= .98;
this.dy += .22;
this.x += this.dx;
this.y += this.dy;
this.pl.push([this.x, this.y]);
//保持轨迹长度
if (this.pl.length > 10) this.pl.shift();
this.life--;
}
};
}
//总烟火数组
var B = [];
//在x,y位置创建一个烟火
function createBoom(x, y) {
var q = [],
r = rnd(255) | 0,
g = rnd(255) | 0,
b = rnd(255) | 0;
for (var i = 0; i < rnd(16) + 15; i++) q.push(createPT(x, y, r, g, b));
B.push(q);
}
setInterval(function() {
cvs.clearRect(0, 0, W, H);
//依次绘制烟火
for (var n = 0; n < B.length; n++) {
var q = B[n];
for (var i = 0; i < q.length; i++) {
var pt = q[i];
pt.move();
dq(pt.pl, pt.life / 30, pt.r, pt.g, pt.b);
//超过生存周期就消失 柯 乐 义
if (pt.life <= 0) q.splice(i, 1);
}
//当一个烟火包含的烟花个数为零,则消灭这个烟火
if (!B[n].length) B.splice(n, 1);
}
//每隔一段时间添加一个新烟火
if (new Date - up < 2000 + rnd(2000)) return;
up = new Date;
createBoom(rnd(W / 2) + W / 4, rnd(50) + 50);
},20);
function rnd(n) {
return (n || 1) * Math.random();
}
function dq(ar, z, r, g, b) {
cvs.save();
//绘制轨迹。思路是每次都绘制一条透明的轨迹,叠加起来形成一条渐变的样子
for (var i = 0; i < ar.length; i++) {
cvs.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + Math.abs(.2 * z) + ')';
cvs.lineWidth = Math.min(i + 1, 4)*2;
cvs.beginPath();
cvs.moveTo(ar[i][0], ar[i][1]);
for (var j = i + 1; j < ar.length; j++) cvs.lineTo(ar[j][0], ar[j][1]);
cvs.stroke();
}
cvs.restore();
}
})(c, c.getContext('2d'));</script>

原文:http://keleyi.com/a/bjac/3pipmkmg.htm

触须:http://keleyi.com/a/bjac/k3pi4ehx.htm

web前端:http://www.cnblogs.com/jihua/p/webfront.html

JavaScript实现HTML5烟花特效的更多相关文章

  1. 纯JavaScript实现HTML5 Canvas六种特效滤镜

    纯JavaScript实现HTML5 Canvas六种特效滤镜  小试牛刀,实现了六款简单常见HTML5 Canvas特效滤镜,并且封装成一个纯 JavaScript可调用的API文件gloomyfi ...

  2. 青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 10(排行榜界面&界面管理)

    继上一次介绍了<神奇的六边形>的完整游戏开发流程后(可点击这里查看),这次将为大家介绍另外一款魔性游戏<跳跃的方块>的完整开发流程. (点击图片可进入游戏体验) 因内容太多,为 ...

  3. 【javascript】html5中使用canvas编写头像上传截取功能

    [javascript]html5中使用canvas编写头像上传截取功能 本人对canvas很是喜欢,于是想仿照新浪微博头像上传功能(前端使用canvas) 本程序目前在谷歌浏览器和火狐浏览器测试可用 ...

  4. 分享8款绚丽的HTML5/jQuery特效插件

    有几天没有分享前端资源了,今天要向大家分享15款非常给力的HTML5/jQuery特效插件,废话少说,一起来看看. 1.CSS3图片重力感应特效 很酷的一款CSS3模拟重力感应特效,你可以拖动图片来甩 ...

  5. 7款震撼人心的HTML5文字特效

    1.CSS3五彩文字特效 文字带阴影效果 这是一款非常具有卡通形象的CSS3五彩文字特效,虽然没有迷人的动画效果,但是五彩缤纷的文字展现在屏幕上也是非常酷的,再加上每一个文字都有不同角度的阴影效果,加 ...

  6. JavaScript与html5写的贪吃蛇完整代码

    JavaScript与html5写的贪吃蛇完整代码 查看运行效果可访问http://www.codesocang.com/texiao/youxitexiao/2014/0402/7045.html# ...

  7. 每天一个JavaScript实例-html5拖拽

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  8. 创意HTML5文字特效 类似翻页的效果

    原文:创意HTML5文字特效 类似翻页的效果 之前在网上看到一款比较有新意的HTML5文字特效,文字效果是当鼠标滑过是出现翻开折叠的效果,类似书本翻页.于是我兴致勃勃的点开源码看了一下,发现其实实现也 ...

  9. ( 转 )超级惊艳 10款HTML5动画特效推荐

    今天我们要来推荐10款超级惊艳的HTML5动画特效,有一些是基于CSS3和jQuery的,比较实用,特别是前几个HTML5动画,简直酷毙了,现在将它们分享给大家,也许你能用到这些HTML5动画和jQu ...

随机推荐

  1. ValidationSummary控件不弹出错误提示框

    采用VS2013 编写的前台,运用ValidationSummary控件时,不出现错误弹窗,网上找到了解决方法 发现是ASP.NET 4.5对验证控件的影响(兼容性),使用ASP.NET 4.5的解决 ...

  2. poj 2594Treasure Exploration(有向图路径可相交的最小路径覆盖)

    1 #include<iostream> #include<cstring> #include<algorithm> #include<cstdio> ...

  3. nodejs+phantomjs+七牛 实现截屏操作并上传七牛存储

    近来研究了下phantomjs,只是初涉,还谈不上深入研究,首先介绍下什么是phantomjs. 官网上的介绍是:”PhantomJS is a headless WebKit scriptable ...

  4. Zookeeper-Zookeeper client

    当我写完Zookeeper leader选举后,准备看看Zookeeper的存储和处理客户端请求的时候发现,如果能看看Zookeeper的API是不是在理解后面的过程更好些呢. Zookeeper的c ...

  5. PHP的学习--解析URL

    PHP中有两个方法可以用来解析URL,分别是parse_url和parse_str. parse_url 解析 URL,返回其组成部分 mixed parse_url ( string $url [, ...

  6. c#Dictionary键值对的使用

    直接粘代码吧 using System; using System.Collections.Generic; using System.Linq; using System.Text; using S ...

  7. ASP.NET MVC必知必会知识点总结(二)

    一.实现Controller的依赖注入: 1.自定义继承DefaultControllerFactory 类的控制器工厂类并重写GetControllerInstance方法:(如:InjectCon ...

  8. 使用Spark分析拉勾网招聘信息(三): BMR 入门

    简述 本文,意在以最小的篇幅,来帮助对大数据和Spark感兴趣的小伙伴,能尽快搭建一个可用的Spark开发环境.力求言简意赅.文章,不敢自称BMR的最佳实践,但绝对可以帮助初学者,迅速入门,能够专心于 ...

  9. Chrome开发者工具详解(4)-Profiles面板

    Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求,你可以使用Profiles面板,利用这个面板你可以追踪网页程序的内存泄漏问题,进一 ...

  10. C#的类,构造函数以及Array阵列的数据填充与绑定

    今天学习,如标题. 创建一个类,字段属性构造函数: Source code: using System; using System.Collections.Generic; using System. ...