js实现烟花特效

本文实例为大家分享了js实现烟花特效的具体代码,供大家参考,具体内容如下

1.概述

在网页背景中实现鼠标点击出现模拟烟花爆炸的特效

2.思路

1.获取鼠标点击位置,底端创建烟花节点。
2.为烟花添加css属性,烟花节点从下至上运动。
3.运动至鼠标位置时移除烟花节点,同时生成多个烟花碎片。
4.为不同的烟花碎片随机生成不同的颜色、运动速度、运动方向。
5.烟花碎片超出屏幕显示部分时移除。

3.代码部分

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Document</title>
 <style>
  * {
   padding: 0;
   margin: 0;
  }

  html,
  body {
   width: 100%;
   height: 100%;
   background-color: black;
   overflow: hidden;
  }
 </style>
</head>

<body>
 <script src="move.js"></script>
 <script>

  class Firework {
   constructor(x, y) {//x,y鼠标的位置
    this.x = x;//将水平位置赋值给this.x属性。
    this.y = y;//将垂直位置赋值给this.y属性。
    this.ch = document.documentElement.clientHeight;//可视区的高度
   }
   init() {
    //1.创建烟花节点。
    this.firebox = document.createElement('div');
    this.firebox.style.cssText = `width:5px;height:5px;background:#fff;position:absolute;left:${this.x}px;top:${this.ch}px;`;
    document.body.appendChild(this.firebox);
    this.firemove();//创建完成,直接运动。
   }
   //2.烟花节点运动
   firemove() {
    bufferMove(this.firebox, { top: this.y }, () => {
     document.body.removeChild(this.firebox);
     //当烟花节点消失的时候,创建烟花碎片
     this.createfires()
    });
   }
   //3.当前鼠标点击的位置,随机产生30-60个盒子。(随机颜色)
   createfires() {
    for (let i = 1; i <= this.rannum(30, 60); i++) {
     this.fires = document.createElement('div');
     this.fires.style.cssText = `width:5px;height:5px;background:rgb(${this.rannum(0, 255)},${this.rannum(0, 255)},${this.rannum(0, 255)});position:absolute;left:${this.x}px;top:${this.y}px;`;
     document.body.appendChild(this.fires);
     this.fireboom(this.fires);//设计成一个一个运动,等到循环结束,出现整体结果。
    }
   }
   //4.烟花碎片运动。
   fireboom(obj) {
    //存储当前obj的初始值。
    let initx = this.x;
    let inity = this.y;

    //随机产生速度(水平和垂直方向都是随机的,符号也是随机的)。
    let speedx = parseInt((Math.random() > 0.5 ? '-' : '') + this.rannum(1, 15));
    let speedy = parseInt((Math.random() > 0.5 ? '-' : '') + this.rannum(1, 15));

    obj.timer = setInterval(() => {
     initx += speedx;
     inity += speedy++; //模拟重力加速度(垂直方向比水平方向快一些)
     if (inity >= this.ch) {
      document.body.removeChild(obj);
      clearInterval(obj.timer);
     }
     obj.style.left = initx + 'px';
     obj.style.top = inity + 'px';
    }, 1000 / 60);

   }
   //随机区间数
   rannum(min, max) {
    return Math.round(Math.random() * (max - min) + min);
   }
  }

  document.onclick = function (ev) {
   var ev = ev || window.event;
   //ev.clientX,ev.clientY//获取的鼠标的位置
   new Firework(ev.clientX, ev.clientY).init();
  }
 </script>
</body>

</html>

4.Move.js

function getStyle(obj, attr) {
 if (window.getComputedStyle) {
  return window.getComputedStyle(obj)[attr];
 } else {
  return obj.currentStyle[attr];
 }
}
function bufferMove(obj, json, fn) {
 let speed = 0;
 clearInterval(obj.timer);
 obj.timer = setInterval(function () {
  var flag = true;
  for (var attr in json) {
   var currentValue = null;
   if (attr === 'opacity') {
    currentValue = Math.round(getStyle(obj, attr) * 100);
   } else {
    currentValue = parseInt(getStyle(obj, attr));
   }
   speed = (json[attr] - currentValue) / 10;
   speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);

   if (currentValue !== json[attr]) {
    if (attr === 'opacity') {
     obj.style.opacity = (currentValue + speed) / 100;
     obj.style.filter = 'alpha(opacity=' + (currentValue + speed) + ')';//IE
    } else {
     obj.style[attr] = currentValue + speed + 'px';
    }
    flag = false;
   }
  }
  if (flag) {
   clearInterval(obj.timer);
   fn && typeof fn === 'function' && fn();
  }
 }, 10);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • javascript实现超好看的3D烟花特效

    本文实例为大家分享了超好看3D烟花的具体代码,供大家参考,具体内容如下 <!doctype html> <html> <head> <meta charset="utf-8"> <title>3D烟花</title> <style> html,body{ margin:0px; width:100%; height:100%; overflow:hidden; background:#000; } #c

  • 新年快乐! javascript实现超级炫酷的3D烟花特效

    本文实例为大家分享了javascript实现3D烟花特效的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <meta charset="utf-8"> <title>3D烟花</title> <style> html,b

  • JavaScript实现的简单烟花特效代码

    本文实例讲述了JavaScript实现的简单烟花特效代码.分享给大家供大家参考,具体如下: 这是一款JavaScript烟花特效,过年的时候放到你的网页上祝贺大家牛年大吉吧,是不是很不错? 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-yh-explode-style-demo/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &

  • JS实现超炫网页烟花动画效果的方法

    本文实例讲述了JS实现超炫网页烟花动画效果的方法.分享给大家供大家参考.具体分析如下: 非常炫的使用JS实现的一个网页烟花燃放动画效果,能适应JS做出这样的动画来 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns

  • javascript实现网页背景烟花效果的方法

    本文实例讲述了javascript实现网页背景烟花效果的方法.分享给大家供大家参考.具体如下: 这里的网页背景烟花爆炸特效,不用说是用Js实现的,配合黑色背景效果最好,五颜六色的烟花效果,四散的烟花效果,以前发过一些网页上的烟花特效,本款类似,但代码更简洁. 运行效果如下图所示: 具体代码如下: <html> <head> <title>背景的烟花效果</title> <style type="text/css"> <!

  • 用p5.js制作烟花特效的示例代码

    前言 之前看过一篇文章,使用processing制作烟花特效.效果如下 fireworks 网上调查了一圈了,发现processing是一个互动编程软件,java语言发展而来.而且动画效果是跑在processing专门的模拟器上. 不过好在也有对应的web扩展语言,有processing.js和p5.js. processing.js在github上已经好几年没有人维护了,一些processing的特性支持不了.为此踩了不少坑, 本文就集中讲解如何用p5.js写烟花特效. 代码讲解 proces

  • JS烟花背景效果实现方法

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

  • 原生Js实现简易烟花爆炸效果的方法

    本文实例讲述了原生Js实现简易烟花爆炸效果的方法.分享给大家供大家参考.具体分析如下: 实现原理: 在一定范围内,随机生成一些div,形成烟花效果 复制代码 代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>js烟花效果</title> <script type="text/javascript"> d

  • JS基于面向对象实现的放烟花效果

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

  • js实现烟花特效

    本文实例为大家分享了js实现烟花特效的具体代码,供大家参考,具体内容如下 1.概述 在网页背景中实现鼠标点击出现模拟烟花爆炸的特效 2.思路 1.获取鼠标点击位置,底端创建烟花节点. 2.为烟花添加css属性,烟花节点从下至上运动. 3.运动至鼠标位置时移除烟花节点,同时生成多个烟花碎片. 4.为不同的烟花碎片随机生成不同的颜色.运动速度.运动方向. 5.烟花碎片超出屏幕显示部分时移除. 3.代码部分 <!DOCTYPE html> <html lang="en"&g

  • js模拟实现烟花特效

    本文实例为大家分享了js实现烟花特效的具体代码,供大家参考,具体内容如下 如下图 首先描绘圆周运动 // d1 /*css*/ div{ height: 4px; width: 4px; background: red; position: absolute; } //js var div = document.getElementById('div'); // 画运动点 document.getElementsByTagName('body')[0].appendChild(tdiv); //

  • js实现点击烟花特效

    代码: <script type="text/javascript"> function clickEffect() { let balls = []; let longPressed = false; let longPress; let multiplier = 0; let width, height; let origin; let normal; let ctx; const colours = ["#F73859", "#14FFE

  • 原生JS实现烟花效果

    原生JS实现烟花效果,点击页面生成烟花,向四周扩散,然后再坠落下去.(这里的烟花我是用的特殊字符爱心形状) 基础css代码 /* 设置基础的css样式 */ body{background: #000;overflow: hidden;} .fire{position: absolute;width: 4px;height: 30px;} js代码: 1.给页面添加点击事件,生成主体烟花 //给页面设置点击事件 document.onclick = function(eve){ var e =

  • JavaScript实现烟花特效(面向对象)

    本文实例为大家分享了JavaScript实现烟花特效的具体代码,供大家参考,具体内容如下 本特效使用面向对象编程 分析 OOA 点击触发事件 烟花运动分成两个阶段 向上飞          爆炸 OOD class FireWork{ constructor(){ } bindEvent(){ let _this = this; ele.onclick = function(){ //fly结束再去调用boom函数 _this.fly(_this.boom); } } fly(boom){ }

  • JavaScript实现带音效的烟花特效

    花了半个小时写的代码,这个html5 canvas新年烟花一定不会让大家失望! 首先我们看下静态的效果图: 文章末尾有动态的效果图,滑动即可看到!  JavaScript代码如下: $(function() { var canvas = $('#canvas')[0]; canvas.width = $(window).width(); canvas.height = $(window).height(); var ctx = canvas.getContext('2d'); // resize

  • JavaScript实现五种不同烟花特效

    目录 一.简单大气的烟花 二.在农村看到的烟花 三.可点击的烟花 四.3D旋转烟花 五.可拖动视角的自定义烟花 一.简单大气的烟花 演示地址:http://haiyong.site/fireworks1 HTML代码: 这里的HTML代码很简短 <div> <canvas id="canvas"></canvas> </div> CSS代码 css也只有这两段内容 body{ background:black; overflow:hidd

  • JavaScript实现烟花特效(面向对象)

    本文实例为大家分享了JavaScript实现烟花特效的具体代码,供大家参考,具体内容如下 本特效使用面向对象编程 分析 OOA 点击触发事件 烟花运动分成两个阶段 向上飞           爆炸 OOD class FireWork{ constructor(){ } bindEvent(){ let _this = this; ele.onclick = function(){ //fly结束再去调用boom函数 _this.fly(_this.boom); } } fly(boom){ }

随机推荐