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 相关文章推荐
一个js实现的所谓的滑动门
May 23 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
jQuery匹配文档链接并添加class的方法
Jun 26 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
jQuery 判断元素整理汇总
Feb 28 Javascript
EL表达式截取字符串的函数说明
Sep 22 Javascript
在小程序中推送模板消息的实现方法
Jul 22 Javascript
js实现一款简单踩白块小游戏(曾经很火)
Dec 02 Javascript
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 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 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
匹配任意字符的正则表达式写法
2010/04/29 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
js选择器全面解析
2016/06/27 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python操作Access数据库基本步骤分析
2016/09/19 Python
python实现简易通讯录修改版
2018/03/13 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
python文件拆分与重组实例
2018/12/10 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
python mysql断开重连的实现方法
2019/07/26 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
解决python运行效率不高的问题
2020/07/20 Python
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
小学生班会演讲稿
2014/01/09 职场文书
中学教师暑期培训方案
2014/08/27 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
Vue2.0搭建脚手架
2022/03/13 Vue.js
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers