JavaScript 实现下雪特效的示例代码


Posted in Javascript onSeptember 09, 2020

直接上代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>下雪效果实现</title>
  <link rel="stylesheet" type="text/css" href="reset.css">
  <style type="text/css">
    body,html{
      overflow: hidden;
    }
  </style>
</head>
<body>
  <script type="text/javascript">
    var snowflakes = {
      arr:[],// 数组盛放元素
      snowflake : [//雪花类型
            '❉',
            '❈',
            '*',
            '✲',
            '❀',
            '❃'
            ],
       snowflakeColor : [  //颜色库
            "red",
            "green",
            "#ccc123",
            "#345232",
            "#231111",
            "#ab2322"
            ],
       random : function (num){
        return Math.floor(Math.random()*num);// 获得一个num-1的整数
       },
       init : function (num){
        // 最多个数
        this.maxlength = num;
        // 边界
        this.maxWidth = (document.documentElement.clientWidth || document.body.clientWidth) + 20;
        // 边界
        this.maxHeight = (document.documentElement.clientHeight || document.body.clientHeight) + 20;
        this.create();
        this.move();
       },
       // 创建
       create : function (){
        var that = this;
        setInterval(function (){
          // 当数组中的数量,比最大数量要小的时候 开始创建
          if( that.arr.length < that.maxlength){
            var d = document.createElement("div");
            // 内容和 颜色是随机的 颜色和文字库里面的
            d.innerHTML = that.snowflake[that.random(that.snowflake.length)];
            d.style.color = that.snowflakeColor[that.random(that.snowflakeColor.length)];
            d.style.position = "absolute";
            // 位置是随机的 top(0- -99) left (0 - that.maxWidth*2/3-1)
            d.style.left = that.random(that.maxWidth*2/3) + "px";
            d.style.top = -that.random(100) + "px";
            // 速度
            d.vx = 2+that.random(10);
            d.vy = 3+that.random(10);
            // 数组添加元素, body 添加元素
            document.body.appendChild(d);
            that.arr.push(d)
          }
        },20)
       },
       // 运动
       move : function (){
        var that = this;
        var arr = that.arr;
        setInterval(function (){ 
          // 循环数组中的每一个元素
          for(var i = 0 ; i < arr.length ; i ++ ){
            // 替换位置
            arr[i].style.left = arr[i].offsetLeft + arr[i].vx + "px";
            arr[i].style.top = arr[i].offsetTop + arr[i].vy + 'px';
            // 判断边界 删除元素
            if (arr[i].offsetTop >= that.maxHeight || arr[i].offsetLeft >= that.maxWidth) {
              document.body.removeChild(arr[i]);
              arr.splice(i,1);
            }
          }
        },30)
       }
    }  
    window.onload = function (){
      snowflakes.init(100);
    }  
  </script>
</body>
</html>

效果图

JavaScript 实现下雪特效的示例代码

以上就是JavaScript 实现下雪特效的示例代码的详细内容,更多关于JavaScript 实现下雪特效的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
js判断样式className同时增加class或删除class
Jan 30 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
May 19 Javascript
jquery实现手机发送验证码的倒计时代码
Feb 12 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
Jun 16 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
Jun 26 Javascript
实例讲解JavaScript中instanceof运算符的用法
Jun 08 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
js多个物体运动功能实例分析
Dec 20 Javascript
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
Echarts基本用法_动力节点Java学院整理
Aug 11 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
jQuery实现弹出层效果
Dec 10 jQuery
在Vue中获取自定义属性方法:data-id的实例
Sep 09 #Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 #Javascript
vue实现几秒后跳转新页面代码
Sep 09 #Javascript
JS异步宏队列微队列原理详解
Sep 09 #Javascript
vue 项目软键盘回车触发搜索事件
Sep 09 #Javascript
基于原生JS封装的Modal对话框插件的示例代码
Sep 09 #Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 09 #Javascript
You might like
php设计模式 Builder(建造者模式)
2011/06/26 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
10个最优秀的Node.js MVC框架
2017/08/24 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
详解Vue数据驱动原理
2020/11/17 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
如何在django中运行scrapy框架
2020/04/22 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
Python接口测试数据库封装实现原理
2020/05/09 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
汽车检测与维修专业求职信
2013/10/30 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
社会发展项目建议书
2014/08/25 职场文书
毕业实习计划书
2015/01/16 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers