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 相关文章推荐
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
JQuery 将元素显示在屏幕的中央的代码
Feb 27 Javascript
菜鸟javascript基础资料整理3 正则
Dec 06 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
全面理解面向对象的 JavaScript(来自ibm)
Nov 10 Javascript
5个书写JavaScript代码的坏习惯,看看你中枪了没?
Nov 06 Javascript
JavaScript为事件句柄绑定监听函数实例详解
Dec 15 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
js实现添加删除表格(两种方法)
Apr 27 Javascript
一个简单的node.js界面实现方法
Jun 01 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
解决vue项目本地启动时无法携带cookie的问题
Feb 06 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制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
destoon各类调用汇总
2014/06/20 PHP
php 魔术方法详解
2014/11/11 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP flush 函数使用注意事项
2016/08/26 PHP
PHP生成随机密码4种方法及性能对比
2020/12/11 PHP
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
JS判断两个时间大小的示例代码
2014/01/28 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
Vue项目查看当前使用的elementUI版本的方法
2018/09/27 Javascript
Vue项目环境搭建详细总结
2019/09/26 Javascript
Python的Django框架中的数据库配置指南
2015/07/17 Python
Python实现根据IP地址和子网掩码算出网段的方法
2015/07/30 Python
Python 自动化表单提交实例代码
2017/06/08 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
2018/02/07 Python
Python中filter与lambda的结合使用详解
2019/12/24 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
美国购物网站:Clickhere2shop
2021/01/28 全球购物
迟到检讨书800字
2014/01/13 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
挂职个人工作总结
2015/03/05 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
2016元旦主持人经典开场白台词
2015/12/03 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android
LeetCode189轮转数组python示例
2022/08/05 Python