javascript实现下雪效果【实例代码】


Posted in Javascript onMay 03, 2016

原理 :

1、js动态创建DIV,指定CLASS类设置不同的背景图样式显示不同的雪花效果。

2、js获取创建的DIV并改变其top属性值,当下落的高度大于屏幕高后删除该移动div

3、好像不够完善勿喷

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>雪花飞舞</title>
  <link rel="stylesheet" href="css/index.css">
  <script src="js/move.js"></script>
</head>
<body>
  <div class="snow_parent" id="js_sonw">
    
  </div>
</body>
</html>

CSS代码

*{
  margin:0;
  padding:0;
  list-style: none;
  border: none;
}
body{
  width: 100%;
  height:600px;
  background:#000;
}
.snow_parent{
  position: relative;
  width: 100%;
  height:100%;
  overflow: hidden;
  margin: 0 auto;
}
.snow_parent div.parent{
  background-image: url(../img/snow.png);
  float: left;
  -webkit-transform: scale(.1);
  -moz-transform: scale(.1);
  -o-transform: scale(.1);
  -ms-transform: scale(.1);
  transform: scale(.1);
  position: absolute;
}
.snow_one{
  width: 180px;
  height: 180px;
  background-position:0 0;
  background-repeat: no-repeat;
  left:-70px;
  top: -95px;
}
.snow_two{
  width: 140px;
  height: 140px;
  background-position:-220px -18px;
  left:-30px;
  top: -75px;
}
.snow_three{
  width:150px;
  height: 150px;
  background-position:-400px -15px;
  left:-20px;
  top: -80px;
}
.snow_four{
  width: 160px;
  height: 160px;
  background-position:-10px -206px;  
}
.snow_four{
  left:-10px;
  top: -85px;
}

JS代码:

/*
  creatBy jiucheng 2016-4-24
*/ 
window.onload=function(){
  init();
}
// 创建DIV
function creatDiv(){
  // 创建DIV并追加到父元素
  var snowDiv=document.createElement("div");
  document.getElementById("js_sonw").appendChild(snowDiv);
  // 让创建DIV的class为随机,显示不同的雪花
  var whatName=["snow_one parent","snow_two parent","snow_three parent","snow_four parent"];
  var index=Math.floor(Math.random()*whatName.length);
  snowDiv.className=whatName[index];
  // 获取该DIV的left属性值(随机的)并赋值给创建的DIV
  var whatLeft=getLeft()+'px';
  snowDiv.style.left=whatLeft;
  return snowDiv;
}
// 获取随机left属性值
function getLeft(){
  // 获取该DIV的最大left属性值即父元素的宽度
  var eleParent=document.getElementById("js_sonw");
  // 获取父元素的所有style样式
  var style=window.getComputedStyle(eleParent);
  // CSS中的left是负数这里得减去下
  var maxWidth=parseInt(style.width)+70;
  // 让创建的DIV的left为随机值
  var randomLeft=Math.floor(Math.random()*maxWidth);
  return randomLeft;
}
// 让其向下移动
function moveDown(){
  // 获取移动对象
  var moveElem=creatDiv();
  // 获取移动对象的所有style属性值
  var eleStyle=window.getComputedStyle(moveElem);
  // 获取它的top属性值
  var eleTop=parseInt(eleStyle.top);
  // 设置定时器动态改变移动对象的top属性值
  var t=setInterval(function(){
    eleTop++;
    // 把新的top值付给移动对象
    moveElem.style.top=eleTop+"px";
    // 当下落到屏幕的高度后停止定时器并把该移动对象从父元素删除
    if(eleTop>=window.innerHeight){    
      clearInterval(t);
      document.getElementById("js_sonw").removeChild(moveElem);
    }    
  },10);//下落速度没10毫秒下落1px
}
function init(){
  // 动态获取并设置body的高度
  document.body.style.height=window.innerHeight+"px";
  // 每500毫秒创建一个移动对象并执行移动函数
  var t=setInterval(function(){
    moveDown();
  },100);
}

以上这篇javascript实现下雪效果【实例代码】就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript cookie解码函数(兼容ff)
Mar 17 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
js怎么覆盖原有方法实现重写
Sep 04 Javascript
javascript的几种写法总结
Sep 30 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
Feb 06 Javascript
vue-cli webpack2项目打包优化分享
Feb 07 Javascript
微信小程序实现手指触摸画板
Jul 09 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
详解vue在项目中使用百度地图
Mar 26 Javascript
js中比较两个对象是否相同的方法示例
Sep 02 Javascript
js实现GIF图片的分解和合成
Oct 24 Javascript
javascript中闭包closure的深入讲解
Mar 03 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
May 03 #Javascript
javascript的列表切换【实现代码】
May 03 #Javascript
jQuery中队列queue()函数的实例教程
May 03 #Javascript
JavaScript中split与join函数的进阶使用技巧
May 03 #Javascript
总结JavaScript三种数据存储方式之间的区别
May 03 #Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 #Javascript
浅析函数声明和函数表达式——函数声明的声明提前
May 03 #Javascript
You might like
Smarty模板快速入门
2007/01/04 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php的ajax简单实例
2014/02/27 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
PHP实现根据银行卡号判断银行
2015/04/29 PHP
反射调用private方法实践(php、java)
2015/12/21 PHP
php实现中文转数字
2016/02/18 PHP
php简单压缩css样式示例
2016/09/22 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
js变量作用域及可访问性的探讨
2006/11/23 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
如何解决jQuery EasyUI 已打开Tab重新加载问题
2016/12/19 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
vue插槽slot的理解和使用方法
2019/04/03 Javascript
Python实现拼接多张图片的方法
2014/12/01 Python
Python3实现购物车功能
2018/04/18 Python
pandas分组聚合详解
2020/04/10 Python
Keras自定义IOU方式
2020/06/10 Python
解决PyCharm无法使用lxml库的问题(图解)
2020/12/22 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
宣传策划类求职信范文
2014/01/31 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
春节联欢会主持词
2014/03/24 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
幼儿园感恩节活动方案2014
2014/10/11 职场文书
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python