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 08 Javascript
javascript的键盘控制事件说明
Apr 15 Javascript
JavaScript中常见陷阱小结
Apr 27 Javascript
按下回车键指向下一个位置的一个函数代码
Mar 10 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
May 23 Javascript
js实现多选项切换导航菜单的方法
Feb 06 Javascript
jQuery实现根据类型自动显示和隐藏表单
Mar 18 Javascript
jQuery设置Cookie及删除Cookie实例分析
Apr 15 Javascript
js实现表格筛选功能
Jan 18 Javascript
js和jquery中获取非行间样式
May 05 jQuery
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
VUE+elementui面包屑实现动态路由详解
Nov 04 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 不错的学习资料
2009/02/06 PHP
php 无限分类的树类代码
2009/12/03 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
2015/07/06 PHP
PHP网站建设的流程与步骤分享
2015/09/25 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
tp5 实现列表数据根据状态排序
2019/10/18 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
jQuery-Citys省市区三级菜单联动插件使用详解
2019/07/26 jQuery
微信小程序自定义联系人弹窗
2020/05/26 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
在centos7中分布式部署pyspider
2017/05/03 Python
python操作oracle的完整教程分享
2018/01/30 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
给keras层命名,并提取中间层输出值,保存到文档的实例
2020/05/23 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
幼儿园教师岗位职责
2014/03/17 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
校园演讲稿汇总
2014/05/21 职场文书
大学专科求职信
2014/07/02 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
计算机实训报告范文
2014/11/05 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
小学运动会加油词
2015/07/18 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android