下雪了 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 继承机制的实现
Aug 12 Javascript
jquery 简单的进度条实现代码
Mar 11 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
Jul 21 Javascript
javascript 构造函数方式定义对象
Jan 02 Javascript
jquery图片滚动放大代码分享(1)
Aug 25 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
JavaScript学习笔记之数组的增、删、改、查
Mar 23 Javascript
JavaScript学习笔记之数组去重
Mar 23 Javascript
ztree简介_动力节点Java学院整理
Jul 19 Javascript
vue cli升级webapck4总结
Apr 04 Javascript
js前端面试之同步与异步问题详解
Apr 03 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
Nov 09 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脚本的10个技巧(5)
2006/10/09 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
EditPlus中的正则表达式 实战(2)
2016/12/15 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
使用vue + less 实现简单换肤功能的示例
2018/02/21 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
Javascript模块化机制实现原理详解
2020/04/02 Javascript
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python数据处理实战(必看篇)
2017/06/11 Python
python实现彩色图转换成灰度图
2019/01/15 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
2020/09/23 Python
python3中数组逆序输出方法
2020/12/01 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
个人评价范文分享
2014/01/11 职场文书
校本教研工作制度
2014/01/22 职场文书
保护环境倡议书100字
2014/05/19 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
2019关于垃圾分类处理的调查报告
2019/12/26 职场文书
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android
Python采集股票数据并制作可视化柱状图
2022/04/04 Python