下雪了 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之十二 删除事件核心方法
Jul 31 Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 Javascript
js中的scroll和offset 使用比较的实例与分析
Sep 29 Javascript
JavaScript原生对象之Number对象的属性和方法详解
Mar 13 Javascript
javascript动画算法实例分析
Jul 31 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
jquery append与appendTo方法比较
May 24 jQuery
bootstrap Table服务端处理分页(后台是.net)
Oct 19 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
Sep 21 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通过function_exists检测函数是否存在的方法
2015/03/18 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
php实现单笔转账到支付宝功能
2018/10/09 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
jQuery实现table中两列CheckBox只能选中一个的示例
2017/09/22 jQuery
JavaScript实现留言板案例
2020/03/17 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Python自定义函数计算给定日期是该年第几天的方法示例
2019/05/30 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
营销主管自我评价怎么写
2013/09/19 职场文书
汽车检测与维修个人求职信
2013/09/24 职场文书
普师专业个人自荐信范文
2013/11/26 职场文书
现金会计岗位职责
2013/12/05 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
环保志愿者活动总结
2014/06/27 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015年政治教研组工作总结
2015/07/22 职场文书
Python+Appium自动化测试的实战
2021/06/30 Python
Python实现双向链表
2022/05/25 Python