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 相关文章推荐
Javascript里使用Dom操作Xml
Sep 20 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
Sep 02 Javascript
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
JavaScript中的toLocaleDateString()方法使用简介
Jun 12 Javascript
跟我学习javascript的Date对象
Nov 19 Javascript
使用JS 插件qrcode.js生成二维码功能
Feb 20 Javascript
@ResponseBody 和 @RequestBody 注解的区别
Mar 08 Javascript
利用JS实现scroll自定义滚动效果详解
Oct 17 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 Javascript
Vue 封装防刷新考试倒计时组件的实现
Jun 05 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 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水印技术
2007/02/14 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
JavaScript 设计模式 安全沙箱模式
2010/09/24 Javascript
原生js实现半透明遮罩层效果具体代码
2013/06/06 Javascript
javascript的内存管理详解
2013/08/07 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
第五章之BootStrap 栅格系统
2016/04/25 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
用js编写留言板
2020/03/17 Javascript
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
详解python的argpare和click模块小结
2019/03/31 Python
jupyter notebook 重装教程
2020/04/16 Python
Python改变对象的字符串显示的方法
2020/08/01 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
推广活动策划方案
2014/08/23 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
出纳工作检讨书
2014/10/18 职场文书
2014年调度员工作总结
2014/11/19 职场文书
详解在OpenCV中如何使用图像像素
2022/03/03 Python
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers
介绍一下28个JS常用数组方法
2022/05/06 Javascript