下雪了 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自定义startWith()和endWith()的两种方法
Nov 11 Javascript
js实现的map方法示例代码
Jan 13 Javascript
Javascript写入txt和读取txt文件示例
Feb 12 Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 Javascript
Jqgrid之强大的表格插件应用
Dec 02 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
微信小程序 textarea 详解及简单使用方法
Dec 05 Javascript
深入理解javascript prototype的相关知识
Sep 19 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
微信小程序点击滚动到指定位置的实现
May 22 Javascript
DWR内存兼容及无法调用问题解决方案
Oct 16 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
PHP实现图片压缩的两则实例
2014/07/19 PHP
nodejs win7下安装方法
2012/05/24 NodeJs
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
2015/01/13 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue+element-ui+axios实现图片上传
2019/08/20 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
[01:48:04]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第一场 2月7日
2021/03/11 DOTA
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
2018/06/01 HTML / CSS
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
英国天然抗衰老护肤品品牌:Nakin Skin Care
2019/04/16 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
策划创业计划书
2014/02/06 职场文书
《月迹》教学反思
2014/02/19 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
殡葬服务心得体会
2014/09/11 职场文书
机关作风建设自查报告
2014/10/22 职场文书
中学生社区服务活动报告
2015/02/05 职场文书
2015年植树节活动总结
2015/02/06 职场文书
公司停电通知
2015/04/15 职场文书
关于车尾的标语大全
2015/08/11 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python