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 相关文章推荐
JS代码格式化和语法着色V2
Oct 14 Javascript
如何在标题栏显示框架内页面的标题
Feb 03 Javascript
JavaScript实现彩虹文字效果的方法
Apr 16 Javascript
jQuery实现MSN中文网滑动Tab菜单效果代码
Sep 09 Javascript
javascript产生随机数方法汇总
Jan 25 Javascript
jQuery选择器总结之常用元素查找方法
Aug 04 Javascript
JavaScript之Map和Set_动力节点Java学院整理
Jun 29 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
node+express框架中连接使用mysql(经验总结)
Nov 10 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
JavaScript, select标签元素左右移动功能实现
May 14 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 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
中国广播史趣谈 — 几个历史第一次
2021/03/01 无线电
上传多个文件的PHP脚本
2006/11/26 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
Maps Javascript
2007/01/22 Javascript
javascript 获取表单file全路径
2009/12/31 Javascript
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
浅谈js中的闭包
2015/03/16 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
2016/01/28 Javascript
关于网页中的无缝滚动的js代码
2016/06/09 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
javascript+css3开发打气球小游戏完整代码
2017/11/28 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
vue组件创建的三种方式小结
2020/02/03 Javascript
原生js拖拽实现图形伸缩效果
2020/02/10 Javascript
python连接mysql数据库示例(做增删改操作)
2013/12/31 Python
Python基于Tkinter实现的记事本实例
2015/06/17 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
Python短信轰炸的代码
2020/03/25 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
python中rb含义理解
2020/06/18 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
Fossil德国官网:化石手表、手袋、珠宝及配件
2019/12/07 全球购物
群众路线个人自我剖析材料
2014/10/07 职场文书
新闻人物通讯稿
2014/10/09 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL