下雪了 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 相关文章推荐
jquery中获取select选中值的代码
Jun 27 Javascript
基于JQuery实现的Select级联
Jan 27 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
JavaScript判断前缀、后缀是否是空格的方法
Apr 15 Javascript
javascript对象的创建和访问
Mar 08 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
Sep 05 Javascript
微信小程序教程系列之视图层的条件渲染(10)
Apr 19 Javascript
JS打印彩色菱形的实例代码
Aug 15 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
Vue使用lodop实现打印小结
Jul 06 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 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
第十四节--命名空间
2006/11/16 PHP
PHP中的array数组类型分析说明
2010/07/27 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
jQuery中:text选择器用法实例
2015/01/03 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
使用getBoundingClientRect方法实现简洁的sticky组件的方法
2016/03/22 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
javascript实现摄像头拍照预览
2019/09/30 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
2019/10/17 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
2019/11/13 Javascript
实现一个Vue自定义指令懒加载的方法示例
2020/06/04 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
2020/09/04 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
Python自动登录126邮箱的方法
2015/07/10 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
python实现趣味图片字符化
2019/04/30 Python
python中自带的三个装饰器的实现
2019/11/08 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
python解释器安装教程的方法步骤
2020/07/02 Python
python爬取招聘要求等信息实例
2020/11/20 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
浅析HTML5 Landmark
2020/09/11 HTML / CSS
员工自我评价范文
2015/03/11 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL