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 实现AJAX加载XML并解析的脚本
Jul 25 Javascript
js DOM的学习笔记
Dec 22 Javascript
使用CamanJS在Web页面上处理图像的技巧
Aug 18 Javascript
Jquery为DIV添加click事件的简单实例
Jun 02 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
Aug 24 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
Sep 21 Javascript
预防网页挂马的方法总结
Nov 03 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 Javascript
使用vue-cli导入Element UI组件的方法
May 16 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
Nov 04 Javascript
JavaScript获取URL参数的方法分享
Apr 07 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上传、管理照片示例
2006/10/09 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
jQuery右侧选项卡焦点图片轮播特效代码分享
2015/09/05 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
js获取时间函数及扩展函数的方法
2016/10/30 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
js实现点赞按钮功能的实例代码
2020/03/06 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
跟老齐学Python之重回函数
2014/10/10 Python
《与孩子一起学编程》python自测题
2018/05/27 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
python中rc1什么意思
2020/06/19 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
Python编写万花尺图案实例
2021/01/03 Python
HTML5 canvas实现的静态循环滚动播放弹幕
2021/01/05 HTML / CSS
英国家居用品和家居装饰品购物网站:Cox & Cox
2019/08/25 全球购物
党员思想汇报范文
2013/12/30 职场文书
给女儿的表扬信
2014/01/18 职场文书
一句话工作感言
2014/03/01 职场文书
张思德观后感
2015/06/09 职场文书
团委副书记工作总结
2015/08/14 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
java中用float时,数字后面加f,这样是为什么你知道吗
2021/09/04 Java/Android