当前位置: 首页 > 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文件
  • 深入了解以太坊
  • [deviceone开发]-do_Webview的基本示例
  • 【Linux系统编程】快速查找errno错误码信息
  • 345-反转字符串中的元音字母
  • 4个实用的微服务测试策略
  • Asm.js的简单介绍
  • C++类中的特殊成员函数
  • DataBase in Android
  • es6
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java概述
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Linux Process Manage
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MySQL-事务管理(基础)
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 聚簇索引和非聚簇索引
  • 使用common-codec进行md5加密
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 找一份好的前端工作,起点很重要
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (rabbitmq的高级特性)消息可靠性
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (一)RocketMQ初步认识
  • (转)c++ std::pair 与 std::make
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET学习全景图
  • [ SNOI 2013 ] Quare
  • []error LNK2001: unresolved external symbol _m
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Android Pro] AndroidX重构和映射