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下实现overlay遮罩层代码
Aug 25 Javascript
js解析与序列化json数据(二)序列化探讨
Feb 01 Javascript
js判断页面中是否有指定控件的简单实例
Mar 04 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
Aug 15 Javascript
详解JavaScript对象类型
Jun 16 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
Sep 28 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
Jan 09 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
JavaScript实现选项卡效果的分析及步骤
Apr 16 Javascript
vue轻量级框架无法获取到vue对象解决方法
May 12 Javascript
JavaScript中的函数式编程详解
Aug 22 Javascript
Vue多选列表组件深入详解
Mar 02 Vue.js
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调用数据库的存贮过程
2006/10/09 PHP
javascript 拖放效果实现代码
2010/01/22 Javascript
利用jQuery实现可输入搜索文字的下拉框
2013/10/23 Javascript
JavaScript数组对象赋值用法实例
2015/08/04 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
关于vue面试题汇总
2018/03/20 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
2018/08/12 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
Python输出9*9乘法表的方法
2015/05/25 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
python 性能优化方法小结
2017/03/31 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
基于python指定包的安装路径方法
2018/10/27 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
python 回溯法模板详解
2020/02/26 Python
scrapy头部修改的方法详解
2020/12/06 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
个人作风剖析材料
2014/02/02 职场文书
冰淇淋店的创业计划书
2014/02/07 职场文书
幼儿园中班教师寄语
2014/04/03 职场文书
求职意向书
2014/07/29 职场文书
预备党员期盼十八届四中全会召开思想汇报
2014/10/17 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
小学四年级学生评语
2014/12/26 职场文书
清洁工个人工作总结
2015/03/05 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang