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 相关文章推荐
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
Mar 07 Javascript
jQuery.clean使用方法及思路分析
Jan 07 Javascript
js原型继承的两种方法对比介绍
Mar 30 Javascript
js实现div闪烁原理及实现代码
Jun 24 Javascript
node.js中的fs.openSync方法使用说明
Dec 17 Javascript
JQuery中DOM事件合成用法实例分析
Jun 13 Javascript
JavaScript截断字符串的方法
Jul 15 Javascript
基于jQuery实现动态数字展示效果
Aug 12 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
Apr 19 Javascript
Bootstrap导航条学习使用(二)
Feb 08 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
Mar 05 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
2014/09/28 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
Yii2选项卡的简单使用
2017/05/26 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
document.documentElement的一些使用技巧
2013/04/18 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
原生javascript 学习之js变量全面了解
2016/07/14 Javascript
详解a++和++a的区别
2017/08/30 Javascript
React优化子组件render的使用
2019/05/12 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
Javascript异步编程async实现过程详解
2020/04/02 Javascript
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
python修改list中所有元素类型的三种方法
2018/04/09 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python3中eval函数用法使用简介
2019/08/02 Python
python try except返回异常的信息字符串代码实例
2019/08/15 Python
Django 实现外键去除自动添加的后缀‘_id’
2019/11/15 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
keras 读取多标签图像数据方式
2020/06/12 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
总经理助理岗位职责
2013/11/08 职场文书
马云的职业生涯规划之路
2014/01/01 职场文书
买房委托公证书
2014/04/08 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
黄石寨导游词
2015/02/05 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技