下雪了 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 相关文章推荐
Knockoutjs的环境搭建教程
Nov 26 Javascript
Perl Substr()函数及函数的应用
Dec 16 Javascript
如何使用headjs来管理和异步加载js
Nov 29 Javascript
Vue.js第四天学习笔记
Dec 02 Javascript
微信小程序中页面FOR循环和嵌套循环
Jun 21 Javascript
Vue自定义事件(详解)
Aug 19 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
React全家桶环境搭建过程详解
May 18 Javascript
AngularJS 前台分页实现的示例代码
Jun 07 Javascript
详解js中Array的方法及技巧
Sep 12 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
Aug 12 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
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 文件状态缓存带来的问题
2008/12/14 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
一个显示效果非常不错的PHP错误、异常处理类
2014/03/21 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
jQuery模拟完美实现经典FLASH导航动画效果【附demo源码下载】
2016/11/09 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
python动态监控日志内容的示例
2014/02/16 Python
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
python创建关联数组(字典)的方法
2015/05/04 Python
在Django中创建第一个静态视图
2015/07/15 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
python 瀑布线指标编写实例
2020/06/03 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
带薪年假请假条
2014/02/04 职场文书
药品促销活动方案
2014/02/14 职场文书
销售目标责任书
2014/07/23 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
群教班子对照检查材料
2014/08/26 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
2014年班组长工作总结
2014/11/20 职场文书
个人求职自荐信范文
2015/03/06 职场文书
整脏治乱工作简报
2015/07/21 职场文书