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 相关文章推荐
IE JS编程需注意的内存释放问题
Jun 23 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
Jun 23 Javascript
javascript学习之闭包分析
Dec 02 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
javascript:window.open弹出窗口的位置问题
Mar 18 Javascript
JavaScript获取页面上被选中文字的方法技巧
Mar 13 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
Apr 11 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 Javascript
基于js实现数组相邻元素上移下移
May 19 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截取中文字符串的问题
2006/07/12 PHP
PHP5+UTF8多文件上传类
2008/10/17 PHP
深入理解PHP中的global
2014/08/19 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
python list语法学习(带例子)
2013/11/01 Python
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
详解Python中find()方法的使用
2015/05/18 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
python+Selenium自动化测试——输入,点击操作
2020/03/06 Python
简单了解python列表和元组的区别
2020/05/14 Python
如何使用Python调整图像大小
2020/09/26 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
大学生毕业求职简历的自我评价
2013/10/24 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL