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 相关文章推荐
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
Jan 29 Javascript
js 字符串转换成数字的三种方法
Mar 23 Javascript
js如何实现设计模式中的模板方法
Jul 23 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
node.js中的fs.lchown方法使用说明
Dec 16 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
JavaScript学习总结之正则的元字符和一些简单的应用
Jun 30 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
Oct 26 Javascript
解决VUEX兼容IE上的报错问题
Mar 01 Javascript
了解JavaScript函数中的默认参数
May 30 Javascript
layui实现根据table数据判断按钮显示情况的方法
Sep 26 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 AJAX实例根据邮编自动完成地址信息
2008/11/23 PHP
基于empty函数的判断详解
2013/06/17 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
js验证表单大全
2006/11/25 Javascript
什么是cookie?js手动创建和存储cookie
2014/05/27 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
jQuery Ajax中的事件详细介绍
2015/04/16 Javascript
JavaScript多线程详解
2015/08/12 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
js解决movebox移动问题
2016/03/29 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
2018/11/08 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
uni-app使用微信小程序云函数的步骤示例
2020/05/22 Javascript
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
Python脚本修改阿里云的访问控制列表的方法
2019/03/08 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
一份比较全的PHP面试题
2016/07/29 面试题
客服工作职责
2013/12/11 职场文书
淘宝网店营销策划书
2014/01/11 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
贷款担保书范文
2014/05/13 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
老公婚前保证书
2015/02/28 职场文书
关于分班的感言
2015/08/04 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis