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 Timer实现代码
Feb 17 Javascript
深入解析JavaScript中的变量作用域
Dec 06 Javascript
js实现通用的微信分享组件示例
Mar 10 Javascript
一个仿糯米弹框效果demo
Jul 22 Javascript
推荐一个封装好的getElementsByClassName方法
Dec 02 Javascript
JavaScript获取数组最小值和最大值的方法
Jun 09 Javascript
JavaScript的jQuery库插件的简要开发指南
Aug 12 Javascript
微信支付如何实现内置浏览器的H5页面支付
Sep 25 Javascript
jQuery基础_入门必看知识点
Jul 04 Javascript
vue路由嵌套的SPA实现步骤
Nov 06 Javascript
taro小程序添加骨架屏的实现代码
Nov 15 Javascript
vue 图片裁剪上传组件的实现
Nov 12 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 inc文件使用的风险和注意事项
2013/11/12 PHP
搭建基于Docker的PHP开发环境的详细教程
2015/07/01 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
Nodejs如何搭建Web服务器
2016/03/28 NodeJs
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
vue2.0 资源文件assets和static的区别详解
2018/04/08 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
webpack file-loader和url-loader的区别
2019/01/15 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书
通知范文怎么写
2015/04/16 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB