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 相关文章推荐
JS对象与JSON格式数据相互转换
Feb 20 Javascript
JavaScript设计模式之工厂方法模式介绍
Dec 28 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
Apr 11 Javascript
使用plupload自定义参数实现多文件上传
Jul 19 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 Javascript
vue如何实现observer和watcher源码解析
Mar 09 Javascript
3种vue组件的书写形式
Nov 29 Javascript
AngularJS 多指令Scope问题的解决
Oct 25 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
taro开发微信小程序的实践
May 21 Javascript
原生js实现移动小球(碰撞检测)
Dec 17 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
Jan 18 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制作静态网站的模板框架(四)
2006/10/09 PHP
一个用于网络的工具函数库
2006/10/09 PHP
openPNE常用方法分享
2011/11/29 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
php fread函数使用方法总结
2019/05/28 PHP
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
学习JavaScript设计模式之中介者模式
2016/01/14 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
详解vue-cli快速构建项目以及引入bootstrap、jq
2017/05/26 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[01:30:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第二场 2月2日
2021/03/11 DOTA
python爬虫基本知识
2018/03/05 Python
Python读写docx文件的方法
2018/05/08 Python
Django中间件实现拦截器的方法
2018/06/01 Python
python实现电脑自动关机
2018/06/20 Python
Python列表切片常用操作实例解析
2020/03/10 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
Django获取model中的字段名和字段的verbose_name方式
2020/05/19 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
某公司C#程序员面试题笔试题
2014/05/26 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
投资合作意向书范本
2015/05/08 职场文书
爱国之歌(8首)
2019/09/29 职场文书