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 相关文章推荐
Javascript 键盘事件的组合使用实现代码
May 04 Javascript
ajax如何实现页面局部跳转与结果返回
Aug 24 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
JavaScript之json_动力节点Java学院整理
Jun 29 Javascript
AngularJS中的路由使用及实现代码
Oct 09 Javascript
React Native时间转换格式工具类分享
Oct 24 Javascript
AngularJs 禁止模板缓存的方法
Nov 28 Javascript
vue devtools的安装与使用教程
Aug 08 Javascript
koa源码中promise的解读
Nov 13 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
Sep 10 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 Javascript
在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新手用的Insert和Update语句构造类
2012/03/31 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
Yii中特殊行为ActionFilter的使用方法示例
2020/10/18 PHP
Gambit vs CL BO3 第三场 2.13
2021/03/10 DOTA
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
javascript权威指南 学习笔记之null和undefined
2011/09/25 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
用jQuery实现优酷首页轮播图
2017/01/09 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
JavaScript实现AOP详解(面向切面编程,装饰者模式)
2017/12/19 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
全面了解python中的类,对象,方法,属性
2016/09/11 Python
python 连接sqlite及简单操作
2017/06/30 Python
flask-restful使用总结
2018/12/04 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
python flask几分钟实现web服务的例子
2019/07/26 Python
Python lambda表达式filter、map、reduce函数用法解析
2019/09/11 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
戴尔英国翻新电脑和电子产品:Dell UK Refurbished Computers
2019/07/30 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
大学生个人简历中的自我评价
2013/12/27 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
小时代观后感
2015/06/10 职场文书
医院病假条范文
2015/08/17 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
实战Python爬虫爬取酷我音乐
2022/04/11 Python