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 相关文章推荐
jscript之List Excel Color Values
Jun 13 Javascript
Firebug入门指南(Firefox浏览器)
Aug 21 Javascript
Jquery 的outerHeight方法使用介绍
Sep 11 Javascript
javascript顺序加载图片的方法
Jul 18 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
Sep 08 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
Feb 20 Javascript
Angular2中如何使用ngx-translate进行国际化
May 21 Javascript
微信小程序中post方法与get方法的封装
Sep 26 Javascript
Vue中Quill富文本编辑器的使用教程
Sep 21 Javascript
vue 的 solt 子组件过滤过程解析
Sep 07 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
Oct 30 Javascript
浅谈JavaScript中的“!!”作用
Aug 03 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
收音机频率指针指示不准确和灵敏度低问题
2021/03/02 无线电
php开启安全模式后禁用的函数集合
2011/06/26 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
php遍历文件夹和文件列表示例分享
2014/03/11 PHP
thinkPHP+ajax实现统计页面pv浏览量的方法
2017/03/15 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
javaScript 读取和设置文档元素的样式属性
2009/04/14 Javascript
Javascript 中介者模式实例
2009/12/16 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
js获取ip和地区
2017/03/10 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
Python Web服务器Tornado使用小结
2014/05/06 Python
python输出当前目录下index.html文件路径的方法
2015/04/28 Python
pygame游戏之旅 python和pygame安装教程
2018/11/20 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
工程师岗位职责
2013/11/08 职场文书
2014两会优秀的心得体会范文
2014/03/17 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
医院科室评语
2015/01/04 职场文书
html实现弹窗的实例
2021/06/09 HTML / CSS