js模拟如何实现烟花特效

  介绍

小编给大家分享一下js模拟如何实现烟花特效,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

如下图

 js模拟如何实现烟花特效

首先描绘圆周运动

//, d1   css/* */div {   ,高度:4 px;   ,宽度:4 px;   ,背景:红色;   ,位置:绝对;   }//js   var  div =, . getelementbyid (& # 39; div # 39;);,//,画运动点   document.getElementsByTagName(& # 39;身体# 39;)[0].appendChild (tdiv);,//,添加节点      var  deg =, 0,,//,运动角度   var  r =, 100,,//,半径   var  center =,(300,, 300),//,圆的心   var  dd =, Math.PI/,//, 180;π和角度之间的转换      setInterval(函数(){   ,度+ +;=,div.style.left 中心[0],+,Math.cos (deg  *, dd), *, r  +, & # 39; px # 39;;=,div.style.top 中心[1],+,sin (deg  *, dd), *, r  +, & # 39; px # 39;;   },16);

以上代码运行后可以看到一个圆周运动红色方块
完成上述步骤后,有什么用呢?
烟花的绽放,想象一下,可以当成很多方块从一个从圆心开始向四周扩算的一种运动方式。
一束烟花,有10个绽放点,那就是每隔360/10=36度,就有一条运动轨迹。
这样就好办了

//, d2   var  divs =,[];,//,保存烟花节点   var  len =, 10;,//,烟花节点个数   var  temp =, 360,/, len;,//,运动轨迹所隔角度      (var 小姐:=,0;,小姐:& lt;, len;,我+ +){   ,var  tdiv =, document.createElement (& # 39; div # 39;);   r, var  tr1 =,,,//,半径   ,var  deg =,小姐:*,临时,,//,当前轨迹所在的角度值      ,var  left =,中心[0],+,Math.cos (deg  *, dd), * tr1   ,var  topLen =,中心[1],+,sin (deg  *, dd), * tr1=,,tdiv.style.left  left  + & # 39; px # 39;;=,,tdiv.style.top  topLen  + & # 39; px # 39;;=,{,tdiv.data ,//存放节点的位置信息   ,deg :度,   ,r : tr1,   ,left :左,   :,top  topLen   ,};   ,document.getElementsByTagName(& # 39;身体# 39;)[0].appendChild (tdiv);   ,divs.push (tdiv);   }

上述代码运行后可以看到

 js模拟如何实现烟花特效

看起来是有点烟花的意思了,但是烟花的运动轨迹可没这么工整,同一个地点出发,同一个地点结束。
而这个结束点就是半径的长度值,所以只需将半径进行变化就可打乱。

//, d3   function  getRanR (a, b){//大敌;随机得到a - b的值   ,return  Math.floor (math . random () * (b + 1) +一个);   }

将为循环里的tr1改为getRanR (0200);
就可看到下图,

 js模拟如何实现烟花特效

看着很乱,完全没点烟花的样子,没关系,让它运动起来就可以看出来了。
为了让这个动起来就要让上面d2的js代码进行修改。让各个节点的起始位置为圆心。同时为了省点力,用css3进行运动。

/* css */div {   ,高度:4 px;   ,宽度:4 px;   ,背景:红色;   ,位置:绝对;   ,转型:1 s ,,//,就添加这一句   }//js   时间=tdiv.style.left 中心[0],+ & # 39;px # 39;;   时间=tdiv.style.top 中心[1],+ & # 39;px # 39;;

运动轨迹从d2可以看出来已经全部存放到了节点里。用div可以拿到各个节点。所以只需操作div就可以了

document.onclick =, function  (), {   ,(var 小姐:=,0;,小姐:& lt;, divs.length;,我+ +){   ,divMove (div[我])   ,}   }   function  divMove (div) {   ,var  data =, div.data;=,,div.style.left  data.left  +, & # 39; px # 39;;=,,div.style.top  data.top  +, & # 39; px # 39;;   }

运动如下图:

 js模拟如何实现烟花特效

这样就可以看到一个简易的烟花效果。就这么一个简易的烟花连续起来就可达到图1的效果。
所以首先要对这个简易的烟花效果进行封装。
动画方面为了方便操作,所以引入jquery。
以下为html + css

& lt; html>   & lt; head>   ,& lt; meta  charset=皍tf-8"比;   ,& lt; style>   ,* {   ,填充:0;   ,保证金:0;   ,}   ,div.boom-div {   ,高度:4 px;   ,宽度:4 px;   ,背景:橙色;   ,位置:绝对;   ,这个特性:50%;   ,}   容器,# {   ,宽度:100%;   ,高度:100%;   ,位置:相对;   ,}   ,.input-container {   ,位置:绝对;   ,z - index: 1;   ,}   ,& lt;/style>   & lt;/head>   & lt; body>   ,& lt; div 类=癷nput-container"比;   ,& lt; input  id=皉epaint",类型=癰utton",价值=https://www.yisu.com/zixun/爸鼗妗?   

js模拟如何实现烟花特效