JS烟花背景效果实现方法


Posted in Javascript onMarch 03, 2015

本文实例讲述了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>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>又一个很酷的JS烟花背景特效</title>

<script type="text/javascript">

var fireworks = function(){

 this.size = 20;

 this.rise();

}

fireworks.prototype = {

 color:function(){

  var c = ['0','3','6','9','c','f'];

  var t = [c[Math.floor(Math.random()*100)%6],'0','f'];

  t.sort(function(){return Math.random()>0.5?-1:1;});

  return '#'+t.join('');

 },

 aheight:function(){

  var h = document.documentElement.clientHeight-250;

  return Math.abs(Math.floor(Math.random()*h-200))+201;

 },

 firecracker:function(){

  var b = document.createElement('div');

  var w = document.documentElement.clientWidth;

  b.style.position = 'absolute';

  b.style.color = this.color();

  b.style.bottom = 0;

  b.style.left = Math.floor(Math.random()*w)+1+'px';

  document.body.appendChild(b);

  return b;

 },

 rise:function(){

  var o = this.firecracker();

  var n = this.aheight();

  var c = this.color;

  var e = this.expl;

  var s = this.size;

  var k = n;

  var m = function(){

   o.style.bottom = parseFloat(o.style.bottom)+k*0.1+'px';

   k-=k*0.1;

   if(k<2){

    clearInterval(clear);

    e(o,n,s,c);

   }

  }

  o.innerHTML = '.';

  if(parseInt(o.style.bottom)<n){

   var clear = setInterval(m,20);

  }

 },

 expl:function(o,n,s,c){

  var R=n/3,Ri=n/6,Rii=n/9;

  var r=0,ri=0,rii=0;

  for(var i=0;i<s;i++){

   var span = document.createElement('span');

   var p = document.createElement('i');

   var a = document.createElement('a');

   span.style.position = 'absolute';

   span.style.fontSize = n/10+'px';

   span.style.left = 0;

   span.style.top = 0;

   span.innerHTML = '*';

   p.style.position = 'absolute';

   p.style.left = 0;

   p.style.top = 0;

   p.innerHTML = '*';

   a.style.position = 'absolute';

   a.style.left = 0;

   a.style.top = 0;

   a.innerHTML = '*';

   o.appendChild(span);

   o.appendChild(p);

   o.appendChild(a);

  }

  function spr(){

   r += R*0.1;

   ri+= Ri*0.06;

   rii+= Rii*0.06;

   sp = o.getElementsByTagName('span');

   p = o.getElementsByTagName('i');

   a = o.getElementsByTagName('a');

   for(var i=0; i<sp.length;i++){

    sp[i].style.color = c();

    p[i].style.color = c();

    a[i].style.color = c();

    sp[i].style.left=r*Math.cos(360/s*i)+'px';

    sp[i].style.top=r*Math.sin(360/s*i)+'px';

    sp[i].style.fontSize=parseFloat(sp[i].style.fontSize)*0.96+'px';

    p[i].style.left=ri*Math.cos(360/s*i)+'px';

    p[i].style.top=ri*Math.sin(360/s*i)+'px';

    p[i].style.fontSize=parseFloat(sp[i].style.fontSize)*0.96+'px';

    a[i].style.left=rii*Math.cos(360/s*i)+'px';

    a[i].style.top=rii*Math.sin(360/s*i)+'px';

    a[i].style.fontSize=parseFloat(sp[i].style.fontSize)*0.96+'px';

   }

   R-=R*0.1;

   if(R<2){

    o.innerHTML = '';

    o.parentNode.removeChild(o);

    clearInterval(clearI);

   }

  }

  var clearI = setInterval(spr,20);

 }

}

window.onload = function(){

 function happyNewYear(){

  new fireworks();

 }

 setInterval(happyNewYear,1000);

}

</script>

<style type="text/css">

</style>

</head>

<body style="background:#000;font:12px Georgia, 'Times New Roman', Times, serif">

</body>

</html>

运行效果如下所示:

JS烟花背景效果实现方法

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
文本加密解密
Jun 23 Javascript
jQuery ajax 路由和过滤器使用说明
Aug 02 Javascript
JavaScript实现的in_array函数
Aug 27 Javascript
node.js使用require()函数加载模块
Nov 26 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
JavaScript 常见安全漏洞和自动化检测技术
Aug 21 Javascript
JS读写CSS样式的方法汇总
Aug 16 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
Apr 23 Javascript
详解Vue结合后台的列表增删改案例
Aug 21 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
Sep 16 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
Mar 06 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
Mar 03 #Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 #Javascript
js+jquery常用知识点汇总
Mar 03 #Javascript
js实现宇宙星空背景效果的方法
Mar 03 #Javascript
Angular中的Promise对象($q介绍)
Mar 03 #Javascript
Javascript设计模式之观察者模式的多个实现版本实例
Mar 03 #Javascript
Node.js 学习笔记之简介、安装及配置
Mar 03 #Javascript
You might like
php实现telnet功能示例
2014/04/08 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
Angular4.x通过路由守卫进行路由重定向实现根据条件跳转到相应的页面(推荐)
2018/05/10 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
Python下的subprocess模块的入门指引
2015/04/16 Python
在Python下进行UDP网络编程的教程
2015/04/29 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python将unicode转为str的方法
2017/06/21 Python
numpy中实现ndarray数组返回符合特定条件的索引方法
2018/04/17 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
Python Selenium截图功能实现代码
2020/04/26 Python
利用CSS3的定位页面元素
2009/08/29 HTML / CSS
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
法警的竞聘演讲稿
2014/01/02 职场文书
高二化学教学反思
2014/01/30 职场文书
擅自离岗检讨书
2014/02/11 职场文书
四风问题对照检查材料
2014/09/22 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
安全先进班组材料
2014/12/26 职场文书
物资采购管理制度
2015/08/06 职场文书
竞聘演讲报告:基本写作有哪些?附开头范文
2019/10/16 职场文书
python编写五子棋游戏
2021/05/25 Python
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL