当前位置: 首页 > 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文件
  • 30秒的PHP代码片段(1)数组 - Array
  • Brief introduction of how to 'Call, Apply and Bind'
  • canvas 五子棋游戏
  • create-react-app做的留言板
  • ES10 特性的完整指南
  • Github访问慢解决办法
  • JavaScript函数式编程(一)
  • JS变量作用域
  • Python爬虫--- 1.3 BS4库的解析器
  • Rancher如何对接Ceph-RBD块存储
  • 搭建gitbook 和 访问权限认证
  • 浮现式设计
  • 高度不固定时垂直居中
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 解析 Webpack中import、require、按需加载的执行过程
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端技术周刊 2019-02-11 Serverless
  • 让你的分享飞起来——极光推出社会化分享组件
  • 什么是Javascript函数节流?
  • 数据可视化之 Sankey 桑基图的实现
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #{} 和 ${}区别
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • $.ajax,axios,fetch三种ajax请求的区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (7) cmake 编译C++程序(二)
  • (Java数据结构)ArrayList
  • (附源码)计算机毕业设计高校学生选课系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)德国人的记事本
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .net连接oracle数据库
  • @Autowired自动装配
  • [ linux ] linux 命令英文全称及解释