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验证表单大全
Nov 25 Javascript
JavaScript 拖拉缩放效果
Dec 10 Javascript
javascript 打印页面代码
Mar 24 Javascript
Javascript基础教程之关键字和保留字汇总
Jan 18 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
最实用的jQuery分页插件
Oct 09 Javascript
bootstrap快速制作后台界面
Dec 05 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 Javascript
Vue动态加载图片在跨域时无法显示的问题及解决方法
Mar 10 Javascript
design vue 表格开启列排序的操作
Oct 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批量生成随机用户名
2008/07/10 PHP
PHP获取当前页面完整URL的实现代码
2013/06/10 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
php测试kafka项目示例
2020/02/06 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
浅谈js中的延迟执行和定时执行
2016/05/31 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
微信小程序之picker日期和时间选择器
2017/02/09 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
JavaScript 日期时间选择器一些小结
2018/04/02 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
Python getopt模块处理命令行选项实例
2014/05/13 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
深入浅析Python字符编码
2015/11/12 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
利用python实现逐步回归
2020/02/24 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
监考失职检讨书
2015/01/26 职场文书
运动会主持词大全
2015/07/02 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
python 网络编程要点总结
2021/06/18 Python
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python