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简单体验
Jan 10 Javascript
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
Mar 26 Javascript
IE6下JS动态设置图片src地址问题
Jan 08 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
May 28 Javascript
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
BootStrap Validator使用注意事项(必看篇)
Sep 28 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
使用yeoman构建angular应用的方法
Aug 14 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
Feb 27 Javascript
vue-router的hooks用法详解
Jun 08 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 生成文字png图片的代码
2011/04/17 PHP
浅析php中如何在有限的内存中读取大文件
2013/07/02 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
google 搜索框添加关键字实现代码
2010/04/24 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
js获取页面description的方法
2015/05/21 Javascript
在JavaScript中操作时间之getUTCDate()方法的使用
2015/06/10 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
babel基本使用详解
2017/02/17 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
深入理解JavaScript继承的多种方式和优缺点
2017/05/12 Javascript
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
2018/01/08 jQuery
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
使用Python操作MySQL的一些基本方法
2015/08/16 Python
Python实现堆排序的方法详解
2016/05/03 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
获取CSDN文章内容并转换为markdown文本的python
2020/09/06 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
如何将无状态会话Bean发布为WEB服务,只有无状态会话Bean可以发布为WEB服务?
2015/12/03 面试题
法律专业个人实习自我鉴定
2013/09/23 职场文书
国际经济与贸易专业大学生职业规划书
2014/03/01 职场文书
天网工程实施方案
2014/03/26 职场文书
学习走群众路线心得体会
2014/11/05 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
Android studio 简单计算器的编写
2022/05/20 Java/Android