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居然支持中文(unicode)编程!
Apr 12 Javascript
javascript同步Import,同步调用外部js的方法
Jul 08 Javascript
Javascript 生成指定范围数值随机数
Jan 09 Javascript
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
Dec 27 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
Jan 17 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
深入理解js中的加载事件
Feb 08 Javascript
JS中的作用域链
Mar 01 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
细说webpack源码之compile流程-入口函数run
Dec 26 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
vue实现滑动到底部加载更多效果
Oct 27 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事务回滚简单实现方法示例
2017/03/28 PHP
禁止JQuery中的load方法装载IE缓存中文件的方法
2009/09/11 Javascript
JS打开层/关闭层/移动层动画效果的实例代码
2013/05/11 Javascript
Javacript实现颜色梯度变化和渐变的效果代码
2013/05/31 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
element-ui表格列金额显示两位小数的方法
2018/08/24 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
python保存网页图片到本地的方法
2018/07/24 Python
python实现自动登录
2018/09/17 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
python 字典的打印实现
2019/09/26 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
python list的index()和find()的实现
2020/11/16 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
历史学专业推荐信
2013/11/06 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
校长师德表现自我评价
2015/03/05 职场文书
社会实践活动总结格式
2015/05/11 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
责任书格式
2019/04/18 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python