JS实现的雪花飘落特效示例


Posted in Javascript onDecember 03, 2019

本文实例讲述了JS实现的雪花飘落特效。分享给大家供大家参考,具体如下:

首先我们要创建一个HTML文件,将其命名为index.html

<!DOCTYPE html>
<html>
<head>
 <title> Canvas - 雪花特效 </title>
 <meta charset="utf-8">
 <style>
 *{
  margin:0px;
  padding:0px;
 }
 .myCanvas{
  float:left;
  background:rgba(0,0,0,0);
 }
 </style>
</head>
<body>
 <canvas id="myCanvas" class="myCanvas"> </canvas>
</body>
</html>

在上面的代码中,我们创建了一个canvas画布,并且设置他为浮动,背景色无(如果这里不设置浮动,那么等下获取整个屏幕的大小赋给他的时候是会产生边距的)

接下来的JavaScript代码

<script>
 //获取屏幕最大长宽
  var maxWidth = document.documentElement.clientWidth;
  var maxHeight = document.documentElement.clientHeight;
  //获取canvas画布
  var canvasObj = document.getElementById('myCanvas');
  //将屏幕的长宽赋给画布
  canvasObj.width = maxWidth;
  canvasObj.height = maxHeight;
  //创建雪花图形(白色的圆形)
  var cxt = canvasObj.getContext('2d');
  //设置雪花的个数
  var snowCount = 1000;
  var objArray = [];
  for(var index = 0;index < snowCount; index++){
   objArray.push({
     //随机x轴位置
     x : Math.random()*maxWidth,
     //随机y轴位置
     y : Math.random()*maxHeight,
     //随机半径大小
     r : Math.random()*4+1,
     //画圆
     drow : function() {
     cxt.beginPath();
       //填充色
       cxt.fillstyle = "#fff";
       //填充
       cxt.fill();
       //圆的属性
       cxt.arc(this.x,this.y,this.r,0,2*Math.PI);
       //输出圆
       cxt.stroke();
     }
  });
 }
  function drawSnow() {
   cxt.clearRect(0,0,maxWidth,maxHeight)
    //清除0x轴,0y轴,最大屏幕x轴,最大屏幕y轴的圆形
    for(var index = 0; index<objArray.length; index++) {
     //把每个圆都画出来
      objArray[index].drow();
    }
    downLoadSnow()
    //调用雪花移动效果
  }
  function downLoadSnow() {
   for(var index = 0;index<objArray.length;index++){
     if(objArray[index].x > maxWidth) {
       objArray[index].x = 0;
        //当移动的位置大于最大屏幕宽度时返回到0
       } else {
        objArray[index].x +=5;
         //否则一直加下去
       }
       if(objArray[index].y > maxHeight) {
         objArray[index].y = 0;
         //当移动的位置大于最大屏幕高度时返回0
       } else {
         objArray[index].y +=5;
         //否则一直加下去
       }
     }
  }
 setInterval("drawSnow()",30);
 //调用计时器
</script>

到此雪花落下的结果就已经实现了

这里使用在线HTML/CSS/JavaScript前端代码调试运行工具:http://tools.3water.com/code/WebCodeRun测试上述代码,可得如下运行效果:

JS实现的雪花飘落特效示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js过滤数组重复元素的方法
Sep 05 Javascript
JS小功能(onmouseover实现选择月份)实例代码
Nov 28 Javascript
js身份证判断方法支持15位和18位
Mar 18 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 Javascript
javascript中基本类型和引用类型的区别分析
May 12 Javascript
浏览器中url存储的JavaScript实现
Jul 07 Javascript
全屏js头像上传插件源码高清版
Mar 29 Javascript
基于JavaScript实现的快速排序算法分析
Apr 14 Javascript
VSCode 配置React Native开发环境的方法
Dec 27 Javascript
微信小程序时间选择插件使用详解
Dec 28 Javascript
JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】
Feb 22 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
vue中实现高德定位功能
Dec 03 #Javascript
node静态服务器实现静态读取文件或文件夹
Dec 03 #Javascript
js实现时分秒倒计时
Dec 03 #Javascript
Vue实现验证码功能
Dec 03 #Javascript
JS实现压缩上传图片base64长度功能
Dec 03 #Javascript
js实现AI五子棋人机大战
May 28 #Javascript
angular inputNumber指令输入框只能输入数字的实现
Dec 03 #Javascript
You might like
用PHP函数解决SQL injection
2006/12/09 PHP
php 引用(&amp;)详解
2009/11/20 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
JS继承用法实例分析
2015/02/05 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
python打开文件并获取文件相关属性的方法
2015/04/23 Python
利用Django内置的认证视图实现用户密码重置功能详解
2017/11/24 Python
python基础梳理(一)(推荐)
2019/04/06 Python
Python3 chardet模块查看编码格式的例子
2019/08/14 Python
OpenCV模板匹配matchTemplate的实现
2019/10/18 Python
window环境pip切换国内源(pip安装异常缓慢的问题)
2019/12/31 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
商务英语本科生的自我评价分享
2013/11/15 职场文书
医学专业毕业生个人的求职信
2013/12/04 职场文书
会议接待欢迎标语
2014/10/08 职场文书
2015年环卫工作总结
2015/04/28 职场文书
幼儿园元旦主持词
2015/07/06 职场文书
教师师德工作总结2015
2015/07/22 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
体育部部长竞选稿
2015/11/21 职场文书
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
SpringBoot生成License的实现示例
2021/06/16 Java/Android
如何用Python搭建gRPC服务
2021/06/30 Python
Python 中的Sympy详细使用
2021/08/07 Python