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数据属性与访问器属性
Jul 26 Javascript
JS锚点的设置与使用方法
Sep 05 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
vue better-scroll插件使用详解
Jan 25 Javascript
vue 2.x 中axios 封装的get 和post方法
Feb 28 Javascript
在vue中封装可复用的组件方法
Mar 01 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
Jun 12 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
详解vue-cli3使用
Aug 14 Javascript
js实现随机数小游戏
Jun 28 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 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中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
PHP生成plist数据的方法
2015/06/16 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
jQuery参数列表集合
2011/04/06 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
js数字计算 误差问题的快速解决方法
2017/02/28 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
Python之re操作方法(详解)
2017/06/14 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
linux查找当前python解释器的位置方法
2019/02/20 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python实现人机五子棋
2020/03/25 Python
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
关于抽烟的检讨书
2014/02/25 职场文书
大型会议接待方案
2014/03/01 职场文书
婚前财产公证书
2014/04/10 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
低碳环保口号
2014/06/12 职场文书
协会周年庆活动方案
2014/08/26 职场文书
2014年妇女工作总结
2014/12/06 职场文书
代理词怎么写
2015/05/25 职场文书
家庭聚会祝酒词
2015/08/11 职场文书
2019公司管理制度
2019/04/19 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android