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 相关文章推荐
javascript之函数直接量(function(){})()
Jun 29 Javascript
Javascript 阻止javascript事件冒泡,获取控件ID值
Jun 27 Javascript
JQuery优缺点分析说明
Apr 10 Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
js学习之----深入理解闭包
Nov 21 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
Mar 09 Javascript
详解vue服务端渲染(SSR)初探
Jun 19 Javascript
jquery图片放大镜效果
Jun 23 jQuery
javascript自定义事件功能与用法实例分析
Nov 08 Javascript
vue、react等单页面项目应该这样子部署到服务器
Jan 03 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
JS canvas绘制五子棋的棋盘
May 28 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系统流量分析的程序
2006/10/09 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
php中jpgraph类库的使用介绍
2013/08/08 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
如何修改yii2.0自带的user表为其它的表
2017/08/01 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
分享使用AngularJS创建应用的5个框架
2015/12/05 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
2016/07/11 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
详解webpack打包后如何调试的方法步骤
2018/11/07 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
[41:17]VG vs Optic 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python的sorted用法详解
2019/06/25 Python
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
internal修饰符起什么作用
2013/12/16 面试题
银行求职推荐信范文
2013/11/30 职场文书
思想专业自荐信范文
2013/12/25 职场文书
南京青奥会口号
2014/06/12 职场文书
党章学习心得体会2016
2016/01/14 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python