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 相关文章推荐
可输入的下拉框
Jun 19 Javascript
jquery 将disabled的元素置为enabled的三种方法
Jul 25 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
Feb 26 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
javascripit实现密码强度检测代码分享
Dec 12 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
Oct 17 Javascript
jquery过滤特殊字符',防sql注入的实现方法
Aug 17 Javascript
js实现二级菜单点击显示当前内容效果
Apr 28 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
Aug 22 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 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
PHP5中使用DOM控制XML实现代码
2010/05/07 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
Laravel下生成验证码的类
2017/11/15 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
PHP实现动态添加XML中数据的方法
2018/03/30 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
PHP接入微信H5支付的方法示例
2019/10/28 PHP
js substr、substring和slice使用说明小记
2011/09/15 Javascript
Jquery实现页面加载时弹出对话框代码
2013/04/19 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
使用ngrok+express解决本地环境中微信接口调试问题
2018/02/26 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
Python 中导入csv数据的三种方法
2018/11/01 Python
python用win32gui遍历窗口并设置窗口位置的方法
2019/07/26 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
selenium+headless chrome爬虫的实现示例
2021/01/08 Python
墨西哥皇宫度假村预订:Palace Resorts
2018/06/16 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
2015年助残日活动总结
2015/03/27 职场文书
供应商食品安全承诺书
2015/04/29 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书