当前位置: 首页 > news >正文

(Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例

原生js实现放烟花效果,点击鼠标,然后随机向四周扩散,!

思路:

1.首先烟花是五颜六色的,所以我们先写一个随机颜色的函数;

2.创建一个制造烟花的构造函数,第一个参数为元素,第二参数为初始x轴位置,第三参数为y轴位置;

3.烟花散开的位置是随机的,所以我们先要使用随机数生成一个随机的速度值。

代码内有详细注释,生成的烟花形状可以根据自身需要调成图片或者其它样式。

效果图如下:

 

代码如下:

 

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <STYLE>
        *{
            padding: 0px;
            margin: 0px;
            background: #000;
        }
        /*预设置烟花的大小*/
        .firworks{
            width: 4px;
            height: 4px;
            position: absolute;
        }
    </STYLE>
</head>
<body>

</body>

<script type="text/javascript">
    //封装一个颜色随机的效果
    function randomColor(){
        var color = "rgb("
        var r = parseInt(Math.random()*256);
        var g = parseInt(Math.random()*256);
        var b = parseInt(Math.random()*256);
        color = color+r+","+g+","+b+")";
        return color;
    }
    //创建一个制造烟花的构造函数,第一个参数为元素,第二参数为初始x轴位置,第三参数为y轴位置。
    function Fireworks(Div,x,y){
        Div.style.backgroundColor=randomColor();   //给烟花添加背景色
        Div.className="firworks";                    //添加一个class
        document.body.appendChild(Div);
        Div.style.left=x+"px";                        //把鼠标点击坐标给div
        Div.style.top=y+"px";
        var speedX = (parseInt(Math.random()*2) == 0 ? 1 : -1)*parseInt(Math.random()*16 + 1);  //三目运算符随机移动方向,概率50%,为1时往正方向移动,负1时往反方向移动第二个随机数随机速度快慢
        var speedY = (parseInt(Math.random()*2) == 0 ? 1 : -1)*parseInt(Math.random()*20 + 1);
        this.move=function(){
            var i = 3;
            var time1=setInterval(function(){
                i++;
                Div.style.left=Div.offsetLeft+speedX+"px";
                Div.style.top=Div.offsetTop+speedY+i+"px";   //当i+speedY>0时,烟花朝下运动。
                if(Div.offsetLeft+Div.offsetWidth>window.innerWidth|| Div.offsetLeft<2 || Div.offsetTop+Div.offsetHeight>window.innerHeight || Div.offsetTop<2 ){
                    Div.remove();        //移动出可视区域记得删除div和清除定时器
                    clearInterval(time1);
                }
            },30);
        }
    }
    document.onclick=function (e){
        var evt=e||window.event;    //兼容性处理
        for(var i=0;i<80;i++){        //随机烟花的数量
            var div=document.createElement("div");
            var b=new Fireworks(div,evt.pageX,evt.pageY);
            b.move();
        }
    }
</script>
</html>

 

转载于:https://www.cnblogs.com/zhaohongcheng/p/10929314.html

相关文章:

  • unity深度图
  • SRP——聚光灯的阴影
  • CSS——背景图像区域
  • Tex2DArray的使用举例
  • Linux中查看系统资源占用情况的命令
  • unity中草实现举例
  • MySQL 并发事务问题以及事务的隔离级别
  • 四元数转矩阵
  • Activator.CreateInstance with parameters
  • 再谈DrawMeshInstancedIndirect的参数问题
  • Sitecore 8.2 防火墙规则的权威指南
  • unity烘焙参数的程序化配置
  • 苗条的生成树 Slim Span--洛谷
  • 关于ADB 执行报错问题-db server version (31) doesn't match this client (40); killing...
  • 如何查看srp中的shader文件
  • 自己简单写的 事件订阅机制
  • C++类中的特殊成员函数
  • codis proxy处理流程
  • git 常用命令
  • JavaScript创建对象的四种方式
  • JDK 6和JDK 7中的substring()方法
  • ReactNative开发常用的三方模块
  • Redis学习笔记 - pipline(流水线、管道)
  • select2 取值 遍历 设置默认值
  • spark本地环境的搭建到运行第一个spark程序
  • 关于List、List?、ListObject的区别
  • 记录:CentOS7.2配置LNMP环境记录
  • 简析gRPC client 连接管理
  • 浅谈Golang中select的用法
  • 如何解决微信端直接跳WAP端
  • 时间复杂度与空间复杂度分析
  • 微信小程序:实现悬浮返回和分享按钮
  • 微信小程序实战练习(仿五洲到家微信版)
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (C11) 泛型表达式
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (vue)页面文件上传获取:action地址
  • (九)c52学习之旅-定时器
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)jdk与jre的区别
  • (转)linux下的时间函数使用
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .mysql secret在哪_MYSQL基本操作(上)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET 解决重复提交问题
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc