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 拾漏补遗
Dec 27 Javascript
jQuery的运行机制和设计理念分析
Apr 05 Javascript
[JSF]使用DataModel处理表行事件的实例代码
Aug 05 Javascript
浅析hasOwnProperty方法的应用
Nov 20 Javascript
用Jquery选择器计算table中的某一列某一行的合计
Aug 13 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
JavaScript实现的多个图片广告交替显示效果代码
Sep 04 Javascript
angularJS 指令封装回到顶部示例详解
Jan 22 Javascript
如何给ss bash 写一个 WEB 端查看流量的页面
Mar 23 Javascript
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
JavaScript实现购物车基本功能
Jul 21 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
Apr 19 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
我的论坛源代码(八)
2006/10/09 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
PHP中的函数声明与使用详解
2017/05/27 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
PHP微商城开源代码实例
2019/03/27 PHP
解决Laravel5.5下的toArray问题
2019/10/15 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python基础教程之异常详解
2019/01/10 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
python tkinter实现屏保程序
2019/07/30 Python
Django REST Framework之频率限制的使用
2019/09/29 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
世界上最好的旅行夹克:BauBax
2018/12/23 全球购物
高中军训感言600字
2014/03/11 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
拾金不昧感谢信
2015/01/21 职场文书
内勤岗位职责范本
2015/04/13 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS