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 相关文章推荐
javascript中最常用的继承模式 组合继承
Aug 12 Javascript
Javascript Web Slider 焦点图示例源码
Oct 10 Javascript
JS设置cookie、读取cookie、删除cookie
Apr 17 Javascript
JavaScript判断数组是否包含指定元素的方法
Jul 01 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
JavaScript中apply方法的应用技巧小结
Sep 29 Javascript
AngularJS 与百度地图的结合实例
Oct 20 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
Nov 07 Javascript
Bootstrap 响应式实用工具实例详解
Mar 29 Javascript
JavaScript学习笔记之图片库案例分析
Jan 08 Javascript
vue实现验证用户名是否可用
Jan 20 Vue.js
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
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
jQuery EasyUI API 中文文档 - DateBox日期框
2011/10/15 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
PHP 加密 Password Hashing API基础知识点
2020/03/02 PHP
PHP Pipeline 实现中间件的示例代码
2020/04/26 PHP
js类的静态属性和实例属性的理解
2009/10/01 Javascript
JS 控件事件小结
2012/10/31 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
JScript实现地址选择功能
2017/08/15 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
Vue异步加载about组件
2017/10/31 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
python使用心得之获得github代码库列表
2014/06/25 Python
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
Django框架多表查询实例分析
2018/07/04 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
python实现TCP文件传输
2020/03/20 Python
pandas数据拼接的实现示例
2020/04/16 Python
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
会计试用期自我评价
2014/09/19 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
地陪导游欢迎词
2015/01/26 职场文书
简单聊聊Golang中defer预计算参数
2022/03/25 Golang