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(JS) 压缩 / 混淆 / 格式化 批处理工具
Dec 10 Javascript
window.open不被拦截的实现代码
Aug 22 Javascript
JavaScript判断DOM何时加载完毕的技巧
Nov 11 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
Nov 30 Javascript
js获取当前页的URL与window.location.href简单方法
Feb 13 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
Angular 4环境准备与Angular cli创建项目详解
May 27 Javascript
VueJs组件之父子通讯的方式
May 06 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
Apr 04 Javascript
Vue分页器实现原理详解
Jun 28 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 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的配置文件php.ini
2006/10/09 PHP
php记录代码执行时间(实现代码)
2013/07/05 PHP
CodeIgniter安全相关设置汇总
2014/07/03 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
php断点续传之文件分割合并详解
2016/12/13 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
JavaScript 正则命名分组【推荐】
2018/06/07 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
Vue.js 父子组件通信的十种方式
2018/10/30 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
Python实现删除文件但保留指定文件
2015/06/21 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
python实现周期方波信号频谱图
2018/07/21 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python正则-re的用法详解
2019/07/28 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
pytorch实现onehot编码转为普通label标签
2020/01/02 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
法律七进实施方案
2014/03/15 职场文书
会计求职自荐信
2014/06/20 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
JavaScript实现班级抽签小程序
2021/05/19 Javascript
警用民用对讲机找不同
2022/02/18 无线电