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 相关文章推荐
基于jQuery的简单九宫格实现代码
Aug 09 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
Sep 22 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
Dec 16 Javascript
js控制文本框输入的字符类型方法汇总
Jun 19 Javascript
JavaScript构造函数详解
Dec 27 Javascript
使用jquery.form.js实现图片上传的方法
May 05 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
Jun 29 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
React利用插件和不用插件实现双向绑定的方法详解
Jul 03 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 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
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
angularjs实现与服务器交互分享
2014/06/24 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
详解Angular路由之路由守卫
2018/05/10 Javascript
如何更好的编写js async函数
2018/05/13 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
Python实现更改图片尺寸大小的方法(基于Pillow包)
2016/09/19 Python
python实时监控cpu小工具
2018/06/21 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
pandas统计重复值次数的方法实现
2021/02/20 Python
使用CSS3实现多列布局与多背景的技巧
2016/02/29 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
学前教育求职自荐信范文
2013/12/25 职场文书
农民工讨薪标语
2014/06/26 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
顶岗实习计划书
2015/01/16 职场文书
义卖募捐活动总结
2015/05/09 职场文书
交流会主持词
2015/07/02 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript