下雪了 javascript实现雪花飞舞


Posted in Javascript onAugust 02, 2020

本文实例为大家分享了雪花飞舞效果javascript实现,供大家参考,具体内容如下

原理:

1、js动态创建DIV,指定CLASS类设置不同的背景图样式显示不同的雪花效果。

2、js获取创建的DIV并改变其top属性值,当下落的高度大于屏幕高后删除该移动div

3、好像不够完善勿喷

效果预览:http://wjf444128852.github.io/demo02/snow/index.html

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 相关文章推荐
javascript globalStorage类代码
Jun 04 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
Dec 20 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
Apr 30 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
May 13 Javascript
JavaScript实现左右滚动电影画布
Feb 06 Javascript
原生js实现日历效果
Mar 02 Javascript
vue 解决addRoutes多次添加路由重复的操作
Aug 04 Javascript
微信小程序实现页面监听自定义组件的触发事件
Nov 01 Javascript
基于node实现websocket协议
Apr 25 #Javascript
Bootstrap每天必学之导航组件
Apr 25 #Javascript
JavaScript常用字符串与数组扩展函数小结
Apr 24 #Javascript
javascript断点调试心得分享
Apr 23 #Javascript
基于 Node.js 实现前后端分离
Apr 23 #Javascript
javascript学习指南之回调问题
Apr 23 #Javascript
探寻JavaScript中this指针指向
Apr 23 #Javascript
You might like
php 代码优化的42条建议 推荐
2009/09/25 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
基于php下载文件的详解
2013/06/02 PHP
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
thinkphp框架下404页面设置 仅三步
2016/05/14 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
jQuery实现点击小图显示大图代码分享
2015/08/25 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
vue车牌号校验和银行校验实战
2019/01/23 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
vue中template的三种写法示例
2020/10/21 Javascript
python读写json文件的简单实现
2017/04/11 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
python处理写入数据代码讲解
2020/10/22 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
Abe’s of Maine:自1979以来销售相机和电子产品
2016/11/21 全球购物
中专毕业生自我鉴定范文
2013/11/09 职场文书
担保书格式及范文
2014/04/01 职场文书
法律专业求职信
2014/05/24 职场文书
汶川大地震感悟
2015/08/10 职场文书
党员理论学习心得体会
2016/01/21 职场文书