博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript实现下雪效果
阅读量:4634 次
发布时间:2019-06-09

本文共 2922 字,大约阅读时间需要 9 分钟。

原理:

1、js动态创建DIV,指定CLASS类设置不同的背景图样式显示不同的雪花效果。

2、js获取创建的DIV并改变其top属性值,当下落的高度大于屏幕高后删除该移动div

3、好像不够完善勿喷

效果预览:

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();}// 创建DIVfunction 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);}

 

转载于:https://www.cnblogs.com/-walker/p/5427641.html

你可能感兴趣的文章
判断ic卡类型
查看>>
开源Java反编译工具
查看>>
navigator.geolocation的应用 - 将定位信息显示在百度地图上
查看>>
数据结构与算法-概念
查看>>
C学习笔记-字符串
查看>>
PHP-curl
查看>>
Jquery 多行拖拽图片排序 jq优化
查看>>
文件分割机
查看>>
shell的交互式和非交互式登录
查看>>
【转载】ASP.NET自定义404和500错误页面
查看>>
定长顺序串的实现
查看>>
使用var声明的变量 和 直接赋值并未声明的变量的区别
查看>>
[读书笔记]TCP/IP详解V1读书笔记-3
查看>>
Just a Hook HDU - 1698
查看>>
Polo the Penguin and Matrix
查看>>
简评知乎的优点与不足
查看>>
20分钟快速了解Redis
查看>>
[AHOI2009]最小割(最大流+tarjan)
查看>>
Nginx 动静分离
查看>>
Apache - Storm
查看>>