下雪了 javascript实现雪花飞舞

 更新时间:2020年08月02日 10:40:12   作者:九成  
下雪了,这篇文章主要介绍了javascript实现雪花飞舞,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了雪花飞舞效果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程序设计有所帮助。

相关文章

  • 轻松实现js选项卡切换效果

    轻松实现js选项卡切换效果

    这篇文章主要帮助大家轻松实现js选项卡切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • 常见JS前端接口校验方式总结

    常见JS前端接口校验方式总结

    作为一名优秀的接口调用工程师,对接口的返回信息进行校验是必不可少的,本文整理的是一些常用的校验方式,希望能够对大家有所帮助
    2023-05-05
  • 浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法

    浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法

    由于同源策略的缘故,ajax不能向不同域的网站发出请求。接下来通过本文给大家介绍jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法,需要的朋友可以参考下
    2017-02-02
  • JavaScript实现身份证验证代码

    JavaScript实现身份证验证代码

    本文给大家分享的是使用javascript实现身份验证的规则以及代码,非常的简单实用,有需要的小伙伴可以参考下。
    2016-02-02
  • Javascript实现单选框效果

    Javascript实现单选框效果

    这篇文章主要为大家详细介绍了Javascript实现单选框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • 基于JS实现类似支付宝支付密码输入框

    基于JS实现类似支付宝支付密码输入框

    这篇文章主要介绍了基于JS实现类似支付宝支付密码输入框功能,密码框只准输入数字且只可以输入6位数字,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • JS实现轮播图案例

    JS实现轮播图案例

    这篇文章主要为大家详细介绍了JS实现轮播图案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • JavaScript数据类型转换实例(其他类型转字符串、数值型、布尔类型)

    JavaScript数据类型转换实例(其他类型转字符串、数值型、布尔类型)

    这篇文章主要给大家介绍了关于JavaScript数据类型转换的相关资料,本文分别介绍了其他类型转为字符串、其他类型转为数值型以及其他类型转为布尔类型的方法,需要的朋友可以参考下
    2021-07-07
  • CodeMirror实现代码对比功能(插件react vue)

    CodeMirror实现代码对比功能(插件react vue)

    这篇文章主要介绍了CodeMirror实现代码对比功能,用到的插件有vue或者react都需要这一步且同样的下载方式,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • JS中队列和双端队列实现及应用详解

    JS中队列和双端队列实现及应用详解

    这篇文章主要介绍了JS中队列和双端队列实现及应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论