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 相关文章推荐
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 Javascript
判断滚动条到底部的JS代码
Nov 04 Javascript
我的Node.js学习之路(四)--单元测试
Jul 06 Javascript
js使用for循环与innerHTML获取选中tr下td值
Sep 26 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
May 11 Javascript
js数组去重的方法汇总
Jul 29 Javascript
超实用的JavaScript表单代码段
Feb 26 Javascript
VUE使用vuex解决模块间传值问题的方法
Jun 01 Javascript
深入理解Vue 的条件渲染和列表渲染
Sep 01 Javascript
浅谈webpack组织模块的原理
Mar 10 Javascript
es6函数name属性功能与用法实例分析
Apr 18 Javascript
Node实现搜索框进行模糊查询
Jun 28 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程序时遇到的三个问题
2012/01/17 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
$()JS小技巧
2007/07/21 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
Python用于学习重要算法的模块pygorithm实例浅析
2018/08/16 Python
Django model反向关联名称的方法
2018/12/15 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
python随机数分布random均匀分布实例
2019/11/27 Python
Python 音频生成器的实现示例
2019/12/24 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
Delphi软件工程师试题
2013/01/29 面试题
军训的自我鉴定
2013/12/10 职场文书
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android