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 相关文章推荐
Prototype Template对象 学习
Jul 19 Javascript
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
Mar 07 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
Mar 24 Javascript
javascript中parentNode,childNodes,children的应用详解
Dec 17 Javascript
jQuery的观察者模式详解
Dec 22 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
Aug 09 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
layui 上传图片 返回图片地址的方法
Sep 26 Javascript
jquery使用echarts实现有向图可视化功能示例
Nov 25 jQuery
详解如何在JS代码中消灭for循环
Dec 11 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中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
php include和require的区别深入解析
2013/06/17 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
基于jquery扩展漂亮的CheckBox(自己编写)
2013/11/19 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
JavaScript使用prototype属性实现继承操作示例
2020/05/22 Javascript
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python的__builtin__模块中的一些要点知识
2015/05/02 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
开业庆典答谢词
2014/01/18 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
保研推荐信
2014/05/09 职场文书
初中新生军训方案
2014/05/13 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
风雨哈佛路观后感
2015/06/03 职场文书
亮剑观后感300字
2015/06/05 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
PHP实现rar解压读取扩展包小结
2021/06/03 PHP
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL