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(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
jquery mobile开发常见问题分析
Jan 21 Javascript
vue双向数据绑定原理探究(附demo)
Jan 17 Javascript
详解Vue 动态添加模板的几种方法
Apr 25 Javascript
利用vue + element实现表格分页和前端搜索的方法
Dec 25 Javascript
JS实现标签滚动切换效果
Dec 25 Javascript
详解es6超好用的语法糖Decorator
Aug 01 Javascript
详解Vue调用手机相机和相册以及上传
May 05 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
vue data对象重新赋值无效(未更改)的解决方式
Jul 24 Javascript
微信小程序实现购物车功能
Nov 18 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 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
PHP7 标准库修改
2021/03/09 PHP
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
easyUI下拉列表点击事件使用方法
2017/05/18 Javascript
JSON 数据格式详解
2017/09/13 Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
JsonServer安装及启动过程图解
2020/02/28 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
python统计文本字符串里单词出现频率的方法
2015/05/26 Python
Python3 模块、包调用&amp;路径详解
2017/10/25 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python安装本地whl的实例步骤
2019/10/12 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
python GUI库图形界面开发之PyQt5滚动条控件QScrollBar详细使用方法与实例
2020/03/06 Python
Python并发爬虫常用实现方法解析
2020/11/19 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
开办大学饮食联盟创业计划书
2014/01/29 职场文书
施工安全责任书范本
2014/07/24 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
总经理司机岗位职责
2015/04/10 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫