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中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
使用jQuery简化Ajax开发 Ajax开发入门
Oct 14 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
JS脚本defer的作用示例介绍
Jan 02 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
Sep 15 Javascript
boostrapTable的refresh和refreshOptions区别浅析
Jan 22 Javascript
基于JavaScript实现复选框的全选和取消全选
Feb 09 Javascript
Vue通过input筛选数据
Oct 26 Javascript
详解JavaScript中关于this指向的4种情况
Apr 18 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 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修正代码
2011/05/09 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
php分割合并两个字符串的函数实例
2015/06/19 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
学习YUI.Ext 第二天
2007/03/10 Javascript
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
JavaScript中最常用的10种代码简写技巧总结
2017/06/28 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python入门篇之函数
2014/10/20 Python
Python Tkinter GUI编程入门介绍
2015/03/10 Python
详解Python设计模式编程中观察者模式与策略模式的运用
2016/03/02 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
简单叙述一下MYSQL的优化
2016/05/09 面试题
12岁生日演讲稿
2014/05/14 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
2014年护理部工作总结
2014/11/14 职场文书
幼儿园教师管理制度
2015/08/05 职场文书
「睡美人」爱洛公主粘土人开订
2022/03/22 日漫
Python加密与解密模块hashlib与hmac
2022/06/05 Python