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 相关文章推荐
xmlHTTP实例
Oct 24 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
Sep 09 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
基于jquery实现轮播特效
Apr 22 Javascript
vue-router路由简单案例介绍
Feb 21 Javascript
深入理解Angular.JS中的Scope继承
Jun 04 Javascript
详解JS数组Reduce()方法详解及高级技巧
Aug 18 Javascript
jQuery niceScroll滚动条错位问题的解决方法
Feb 03 jQuery
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
微信小程序实现一个简单swiper代码实例
Dec 30 Javascript
JavaScript设计模型Iterator实例解析
Jan 22 Javascript
node爬取新型冠状病毒的疫情实时动态
Feb 06 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 vs Node.js
2015/07/17 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
javascript框架设计之框架分类及主要功能
2015/06/23 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
Vue-cli3项目引入Typescript的实现方法
2019/10/18 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
TensorFlow实现AutoEncoder自编码器
2018/03/09 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
Python ORM编程基础示例
2020/02/02 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Book Depository澳大利亚:世界领先的专业在线书店之一
2018/12/27 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
什么时候需要进行强制类型转换
2016/09/03 面试题
客服实习的个人自我鉴定
2013/10/20 职场文书
出国留学经济担保书
2014/04/01 职场文书
班级课外活动总结
2014/07/09 职场文书
国家奖学金获奖感言
2014/08/16 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python