当前位置: 首页 > 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文件
  • Django 博客开发教程 8 - 博客文章详情页
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • dva中组件的懒加载
  • Electron入门介绍
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • golang中接口赋值与方法集
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • javascript面向对象之创建对象
  • MYSQL 的 IF 函数
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • yii2中session跨域名的问题
  • 对超线程几个不同角度的解释
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 前嗅ForeSpider中数据浏览界面介绍
  • 算法-图和图算法
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 一天一个设计模式之JS实现——适配器模式
  • 用Canvas画一棵二叉树
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​你们这样子,耽误我的工作进度怎么办?
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (007)XHTML文档之标题——h1~h6
  • (6)设计一个TimeMap
  • (Java数据结构)ArrayList
  • (MATLAB)第五章-矩阵运算
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (七)Java对象在Hibernate持久化层的状态
  • (强烈推荐)移动端音视频从零到上手(下)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net 程序发生了一个不可捕获的异常
  • .net6 webapi log4net完整配置使用流程