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 相关文章推荐
jQuery EasyUI API 中文文档 - Documentation 文档
Sep 29 Javascript
Three.js源码阅读笔记(光照部分)
Dec 27 Javascript
用JS将搜索的关键字高亮显示实现代码
Nov 08 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
使用JavaScript触发过渡效果的方法
Jan 19 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 Javascript
js模块加载方式浅析
Aug 12 Javascript
mongoose更新对象的两种方法示例比较
Dec 19 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
May 01 Javascript
vue源码nextTick使用及原理解析
Aug 13 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 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
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
心扬JS分页函数代码
2010/09/10 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
js创建数组的简单方法
2016/07/27 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
vue.js表格分页示例
2016/10/18 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
[04:28]DOTA2亚洲邀请赛小组赛第五日 TOP10精彩集锦
2015/02/03 DOTA
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
django admin后台添加导出excel功能示例代码
2019/05/15 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
python获取点击的坐标画图形的方法
2019/07/09 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
2014年教务工作总结
2014/12/03 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书