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 相关文章推荐
jQuery 源码分析笔记(3) Deferred机制
Jun 19 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
Dec 02 Javascript
javascript笛卡尔积算法实现方法
Apr 08 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
Dec 07 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
Apr 07 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
Jun 08 Javascript
JavaScript的字符串方法汇总
Jul 31 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
Feb 24 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 Javascript
微信小程序实现自定义底部导航
Nov 18 Javascript
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
在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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
PHP Ajax中文乱码问题解决方法
2009/02/27 PHP
php curl基本操作详解
2013/07/23 PHP
php权重计算方法代码分享
2014/01/09 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
php 可变函数使用小结
2018/06/12 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
javascript中使用replaceAll()函数实现字符替换的方法
2010/12/25 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
python 性能提升的几种方法
2016/07/15 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
用OpenCV进行年龄和性别检测的实现示例
2021/01/29 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
选秀节目策划方案
2014/06/06 职场文书
设计大赛策划方案
2014/06/13 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2015学校六五普法工作总结
2015/04/22 职场文书
MySql数据库 查询时间序列间隔
2022/05/11 MySQL