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 18 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
详解AngularJS中自定义指令的使用
Jun 17 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
JavaScript之underscore_动力节点Java学院整理
Jul 03 Javascript
微信小程序 input表单与redio及下拉列表的使用实例
Sep 20 Javascript
浅析vue.js数组的变异方法
Jun 30 Javascript
node实现分片下载的示例代码
Oct 17 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
Nov 15 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
在vue项目中引入highcharts图表的方法
Jan 21 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
Jun 10 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
PHP5新特性: 更加面向对象化的PHP
2006/11/18 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
php UBB 解析实现代码
2011/11/27 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
PHP中header用法小结
2016/05/23 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
JavaScript回调函数callback用法解析
2020/01/14 Javascript
python try except 捕获所有异常的实例
2018/10/18 Python
带你认识Django
2019/01/15 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python 类之间的参数传递方式
2019/12/20 Python
python selenium xpath定位操作
2020/09/01 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
C#公司笔试题
2014/03/28 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
马丁路德金演讲稿
2014/05/19 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
优秀校长事迹材料
2014/12/24 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
消防隐患整改通知书
2015/04/22 职场文书
管理失职检讨书
2015/05/05 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL