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 相关文章推荐
js验证整数加保留小数点的简单实例
Dec 02 Javascript
在JavaScript中操作时间之getMonth()方法的使用
Jun 10 Javascript
jQuery实现的仿百度分页足迹效果代码
Oct 30 Javascript
Bootstrap每天必学之按钮
Nov 26 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
Vue.js每天必学之数据双向绑定
Sep 05 Javascript
js实现返回顶部效果
Mar 10 Javascript
原生js封装运动框架的示例讲解
Oct 01 Javascript
node.js基于express使用websocket的方法
Nov 09 Javascript
Vue中消息横向滚动时setInterval清不掉的问题及解决方法
Aug 23 Javascript
vue-cli 关闭热更新操作
Sep 18 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
深入理解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
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
php 基础函数
2017/02/10 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析
2020/04/20 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
asp批量修改记录的代码
2008/06/25 Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
2012/09/30 Javascript
Javascript表格翻页效果实现思路及代码
2013/08/23 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
python处理html转义字符的方法详解
2016/07/01 Python
python用户管理系统
2018/03/13 Python
python 多线程串行和并行的实例
2019/02/22 Python
python中的decimal类型转换实例详解
2019/06/26 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
解决安装pyqt5之后无法打开spyder的问题
2019/12/13 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
物流专业大学应届生求职信
2013/11/03 职场文书
大学生毕业自我鉴定范文
2013/11/03 职场文书
医科大学生的自我评价
2013/12/04 职场文书
五一晚会主持词
2015/07/01 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python