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 相关文章推荐
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
Apr 27 Javascript
ECMAScript6块级作用域及新变量声明(let)
Jun 12 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
vue实现移动端悬浮窗效果
Dec 01 Javascript
小程序多图列表实现性能优化的方法步骤
May 28 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 Javascript
JS实现纸牌发牌动画
Jan 19 Javascript
使用Ajax实现进度条的绘制
Apr 07 Javascript
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
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
php生成WAP页面
2006/10/09 PHP
PHP一些有意思的小区别
2006/12/06 PHP
php xml 入门学习资料
2011/01/01 PHP
PHP单例模式详解及实例代码
2016/12/21 PHP
[原创]php实现数组按拼音顺序排序的方法
2017/05/03 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
2018/10/25 PHP
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
javascript中的面向对象
2017/03/30 Javascript
jquery实现图片轮播器
2017/05/23 jQuery
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
2017/12/06 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
vue v-model动态生成详解
2018/06/30 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
对Python 除法负数取商的取整方式详解
2018/12/12 Python
jenkins+python自动化测试持续集成教程
2020/05/12 Python
python新手学习使用库
2020/06/11 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
反邪教警示教育方案
2014/05/13 职场文书
国庆节标语大全
2014/10/08 职场文书
求职导师推荐信范文
2015/03/27 职场文书