JS烟花背景效果实现方法

 更新时间:2015年03月03日 10:45:19   作者:代码家园  
这篇文章主要介绍了JS烟花背景效果实现方法,实例分析了javascript操作dom元素实现烟花特效的技巧,需要的朋友可以参考下

本文实例讲述了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>

运行效果如下所示:

希望本文所述对大家的javascript程序设计有所帮助。

相关文章

  • Js和VUE实现跑马灯效果

    Js和VUE实现跑马灯效果

    这篇文章主要为大家详细介绍了Js和VUE实现跑马灯效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • JavaScript实现带粒子效果的进度条

    JavaScript实现带粒子效果的进度条

    这篇文章主要为大家详细介绍了JavaScript实现带粒子效果的进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • uni-app操作数据库的三种方法总结

    uni-app操作数据库的三种方法总结

    数据库操作的,可以采用多方案,下面这篇文章主要给大家介绍了关于uni-app操作数据库的三种方法,文中通过实例代码和图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Javascript中八种遍历方法的执行速度深度对比

    Javascript中八种遍历方法的执行速度深度对比

    关于数组或对象遍历,相信很多人都没有深入观察过执行效率。这是一个曾在群里吵翻天的话题,读懂后你将成为遍历效率话题的大师。下面这篇文章主要介绍了Javascript中八种遍历方法执行速度深度对比的相关资料,需要的朋友可以参考下。
    2017-04-04
  • 使用20行JS代码实现屏幕录制功能

    使用20行JS代码实现屏幕录制功能

    在开发中可能有遇到过屏幕录制的需求,无论是教学、演示还是游戏录制,都需要通过屏幕录制来记录和分享内容,MediaRecorder 是一种强大的技术,可以在浏览器端实现屏幕录制功能,本文将介绍如何使用JS MediaRecorder 实现屏幕录制,需要的朋友可以参考下
    2023-11-11
  • JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题

    JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题

    这篇文章主要介绍了JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题,需要的朋友可以参考下
    2017-06-06
  • bootstrap里bootstrap动态加载下拉框的实例讲解

    bootstrap里bootstrap动态加载下拉框的实例讲解

    今天小编就为大家分享一篇bootstrap里bootstrap动态加载下拉框的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • JS中sort函数排序用法实例分析

    JS中sort函数排序用法实例分析

    这篇文章主要介绍了JS中sort函数排序用法,结合实例形式详细分析了sort函数的功能、原理及实现数组排序的相关技巧,代码中备有详尽的注释便于理解,需要的朋友可以参考下
    2016-06-06
  • JS正则表达式修饰符global(/g)用法分析

    JS正则表达式修饰符global(/g)用法分析

    这篇文章主要介绍了JS正则表达式修饰符global(/g)用法,结合实例形式分析了JS全局匹配修饰符/g的功能、使用方法与相关注意事项,需要的朋友可以参考下
    2016-12-12
  • ionic2 tabs使用 Modal底部tab弹出框

    ionic2 tabs使用 Modal底部tab弹出框

    最近做了一个项目,其中要实现这样的功能,在首页底部中间的tab弹出一个页面,而且是没有底部栏的,而不是像平常滑动的一个子页面。其实实现方法很简单,下面通过本文给大家介绍下
    2016-12-12

最新评论