下雪了 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 相关文章推荐
经验几则 推荐
Sep 05 Javascript
js形成页面的一种遮罩效果实例代码
Jan 04 Javascript
JQuery的Ajax请求实现局部刷新的简单实例
Feb 11 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
Oct 09 Javascript
jQuery hover事件简单实现同时绑定2个方法
Jun 07 Javascript
JavaScript创建对象_动力节点Java学院整理
Jun 27 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
JS实现旋转木马轮播图
Jan 01 Javascript
微信小程序实现多选框功能的实例代码
Jun 24 Javascript
原生js实现点击按钮复制内容到剪切板
Nov 19 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/10/09 PHP
php4的session功能评述(三)
2006/10/09 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
Yii2单元测试用法示例
2016/11/12 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
javascript 基础篇3 类,回调函数,内置对象,事件处理
2012/03/14 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
使用BootStrapValidator完成前端输入验证
2016/09/28 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
javascript实现日历效果
2019/06/17 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
微信小程序云函数添加数据到数据库的方法
2020/03/04 Javascript
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
学习python (2)
2006/10/31 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
浅谈python的elementtree模块处理中文注意事项
2020/03/06 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
在线服装零售商:SheIn
2016/07/22 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
国家机关领导干部民主生活会对照检查材料思想汇报
2014/09/17 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
会计人员岗位职责
2015/02/03 职场文书
质量保证书怎么写
2015/02/27 职场文书
小学生勤俭节约倡议书
2015/04/29 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
Python基础之Socket通信原理
2021/04/22 Python
Python实现照片卡通化
2021/12/06 Python