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 相关文章推荐
jQuery 开天辟地入门篇一
Dec 09 Javascript
在jQuery中 关于json空对象筛选替换
Apr 15 Javascript
js处理自己不能定义二维数组的方法详解
Mar 03 Javascript
JQuery中DOM加载与事件执行实例分析
Jun 13 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
javascript的几种写法总结
Sep 30 Javascript
js通过classname来获取元素的方法
Nov 24 Javascript
详解微信小程序 wx.uploadFile 的编码坑
Jan 23 Javascript
vue组件中的数据传递方法
May 14 Javascript
详解微信小程序与内嵌网页交互实现支付功能
Oct 22 Javascript
详解vue-video-player使用心得(兼容m3u8)
Aug 23 Javascript
JavaScript和TypeScript中的void的具体使用
Sep 12 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
php正则表达匹配中文问题分析小结
2012/03/25 PHP
使用array mutisort 实现按某字段对数据排序
2013/06/18 PHP
php多文件上传实现代码
2014/02/20 PHP
php学习笔记之字符串常见操作总结
2019/07/16 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
JS中表单的使用小结
2014/01/11 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
setTimeout内不支持jquery的选择器的解决方案
2015/04/28 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
2016/06/29 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
用JavaScript和jQuery实现瀑布流
2017/03/19 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
python列表生成式与列表生成器的使用
2018/02/23 Python
python破解zip加密文件的方法
2018/05/31 Python
对python中的six.moves模块的下载函数urlretrieve详解
2018/12/19 Python
Python lxml库的简单介绍及基本使用讲解
2020/12/22 Python
师范院校学生自荐信范文
2013/12/27 职场文书
小学生新学期寄语
2014/01/19 职场文书
不拖欠农民工工资承诺书
2014/03/31 职场文书
考研英语辞职信
2015/05/13 职场文书
我的法兰西岁月观后感
2015/06/09 职场文书
Mysql中一千万条数据怎么快速查询
2021/12/06 MySQL
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers