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十个最常用的自定义函数(中文版)
Sep 07 Javascript
纯js网页画板(Graphics)类简介及实现代码
Dec 24 Javascript
Linux下使用jq友好的打印JSON技巧分享
Nov 18 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 Javascript
JS正则验证多个邮箱完整实例【邮箱用分号隔开】
Apr 19 Javascript
javascript使用正则实现去掉字符串前面的所有0
Jul 23 Javascript
Vue cli构建及项目打包以及出现的问题解决
Aug 27 Javascript
JavaScript继承与聚合实例详解
Jan 22 Javascript
Element-ui DatePicker显示周数的方法示例
Jul 19 Javascript
八种Vue组件间通讯方式合集(推荐)
Aug 18 Javascript
three.js中多线程的使用及性能测试详解
Jan 07 Javascript
JS数组的常用方法整理
Mar 31 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
2个比较经典的PHP加密解密函数分享
2014/07/01 PHP
Linux下手动编译安装PHP扩展的例子分享
2014/07/15 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
WordPres对前端页面调试时的两个PHP函数使用小技巧
2015/12/22 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
jQuery EasyUI API 中文文档 - Documentation 文档
2011/09/29 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
js里怎么取select标签里的值并修改
2012/12/10 Javascript
JS检测图片大小的实例
2013/08/21 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
js实现表格筛选功能
2017/01/18 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
浅谈vue的踩坑路
2017/08/31 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Python根据服务获取端口号的方法
2019/09/25 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
python调用win32接口进行截图的示例
2020/11/11 Python
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
StubHub德国:购买和出售门票
2017/09/06 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
祖国在我心中演讲稿
2014/01/15 职场文书
后勤部经理岗位职责
2014/02/23 职场文书
优质服务活动实施方案
2014/05/02 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
红高粱观后感
2015/06/10 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
创业计划书之美甲店
2019/09/20 职场文书
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang