JS实现超炫网页烟花动画效果的方法


Posted in Javascript onMarch 02, 2015

本文实例讲述了JS实现超炫网页烟花动画效果的方法。分享给大家供大家参考。具体分析如下:

非常炫的使用JS实现的一个网页烟花燃放动画效果,能适应JS做出这样的动画来

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head>

<title>超炫网页烟花效果</title>

</head>

<style type="text/css">

.fire{display:block; overflow:hidden; font-size:12px; position:absolute};

body{overflow:hidden; background:#000}

html{overflow:hidden; background:#000}

</style>

<body>

</body>

<script type="text/javascript">

var Fire = function(r, color) {

this.radius = r || 12;

this.color = color;

this.xpos = 0;

this.ypos = 0;

this.zpos = 0;

this.vx = 0;

this.vy = 0;

this.vz = 0;

this.mass = 1;

this.x =0;

this.y=0;

this.p = document.createElement("span");

this.p.className = "fire";

this.p.innerHTML = "*";

this.p.style.fontSize = this.radius + "px";

this.p.style.color = "#" + this.color;

}

Fire.prototype = {

append: function(parent) {

parent.appendChild(this.p);

},

setSize: function(scale) {

this.p.style.fontSize = this.radius * scale + "px";

},

setPosition:function(x, y) {

this.p.style.left = x + "px";

this.p.style.top =  y + "px";

},

setVisible: function(b) {

this.p.style.display = b ? "block" : "none";

}

}

var fireworks = function() {

var fires = new Array();

var count = 150;

var fl = 250;

var vpx = 500;

var vpy = 300;

var gravity = .5;

var floor = 200;

var bounce = -.8;

var timer;

var wind = ((Math.floor(Math.random()*3) + 3)/10)*(Math.random()*2 - 1 > 0 ? 1 : -1)*.25;

var wpos = 0;

var wcount;

return {

init: function() {

wcount = 50 + Math.floor(Math.random() * 100);

for (var i=0; i<count; i++) {

var color = 0xFF0000;

color = (Math.random() * 0xFFFFFF).toString(16).toString().split(".")[0];

while(color.length < 6) {

color = "0" + color;

}

var fire = new Fire(12, color);

fires.push(fire);

fire.ypos = -100;

fire.vz = Math.random() * 6 - 3;

fire.vx = (Math.random()*2 - 1)*2 ;

fire.vy = Math.random()*-15 - 15;

fire.x = 500

fire.y = 600;

fire.append(document.body);

}

var that = this;

timer = setInterval(function() {

wpos++;

if (wpos >= wcount) {

wpos = 0;

wcount = 50 + Math.floor(Math.random() * 100);

wind = ((Math.floor(Math.random()*3) + 3)/10)*(Math.random()*2 - 1 > 0 ? 1 : -1)*.25;

}

for (var i=0;i<count; i++) {

that.move(fires[i]);

}

}, 30);

},

move: function(fire) {

fire.vy += gravity;

fire.x += fire.vx;

fire.y += fire.vy;

fire.vx += wind;

fire.setPosition(fire.x, fire.y);

if (fire.x < 0 || fire.x >1000 || fire.y  < 0 || fire.y  > 600) {

fire.vx = (Math.random()*2 - 1)*2;

fire.vy = Math.random()*-15 - 15;

fire.x = 500;

fire.y = 600;

fire.setPosition(fire.x, fire.y);

}

}

}

}

fireworks().init();

</script>

</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
预加载css或javascript的js代码
Apr 23 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
Oct 08 Javascript
jquery获得keycode的示例代码
Dec 30 Javascript
jquery实现html页面 div 假分页有原理有代码
Sep 06 Javascript
jQuery中siblings()方法用法实例
Jan 08 Javascript
javascript的tab切换原理与效果实现方法
Jan 10 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
Mar 04 Javascript
Bootstrap CSS组件之导航(nav)
Dec 17 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
Node.js中console.log()输出彩色字体的方法示例
Dec 01 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
Mar 02 #Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 #Javascript
JavaScript日期类型的一些用法介绍
Mar 02 #Javascript
了解Javascript的模块化开发
Mar 02 #Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 #Javascript
js实现图片漂浮效果的方法
Mar 02 #Javascript
ECMAScript 5中的属性描述符详解
Mar 02 #Javascript
You might like
PHP语法速查表
2007/01/02 PHP
PHP判断图片格式的七种方法小结
2013/06/03 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
php计算一个文件大小的方法
2015/03/30 PHP
ThinkPHP控制器详解
2015/07/27 PHP
PHP面向对象详解(三)
2015/12/07 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
jQuery插件开发详细教程
2014/06/06 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
使用python分析git log日志示例
2014/02/27 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python爬虫可以爬什么
2020/06/16 Python
使用CSS3中的calc()属性来以算式表达尺寸数值
2016/06/06 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
英国奢侈品牌时尚购物平台:Farfetch(支持中文)
2020/02/18 全球购物
建筑毕业生自我鉴定
2013/10/18 职场文书
房屋公证委托书
2014/04/03 职场文书
大学开学计划书
2014/04/30 职场文书
开展创先争优活动总结
2014/08/28 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
Window server中安装Redis的超详细教程
2021/11/17 Redis
索尼ICF-5900W收音机测评
2022/04/24 无线电