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 相关文章推荐
ExtJS Store的数据访问与更新问题
Apr 28 Javascript
探讨JavaScript标签位置的存放与功能有无关系
Jan 15 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
js中通过getElementsByName访问name集合对象的方法
Oct 31 Javascript
详解jQuery中的DOM操作
Dec 23 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
全站最详细的Vuex教程
Apr 13 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
Feb 11 Javascript
JavaScript实现多球运动效果
Sep 07 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 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使用exec shell命令注入的方法讲解
2013/11/12 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
2012/03/14 Javascript
JQuery伸缩导航练习示例
2013/11/13 Javascript
Nodejs学习item【入门手上】
2016/05/05 NodeJs
AngularJS入门教程之REST和定制服务详解
2016/08/19 Javascript
react-router实现按需加载
2017/05/09 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
浅谈django中的认证与登录
2016/10/31 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
python全局变量引用与修改过程解析
2020/01/07 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
医学院学生求职简历的自我评价
2013/10/24 职场文书
护士自荐信
2013/10/25 职场文书
企业总经理职责
2014/02/02 职场文书
高中生物教学反思
2014/02/05 职场文书
音乐节策划方案
2014/06/09 职场文书
献爱心标语
2014/06/21 职场文书
模范教师事迹材料
2014/12/16 职场文书
自主招生专家推荐信
2015/03/26 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript