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);
}
时间: 2024-08-08 13:55:05

javascript实现下雪效果的相关文章

强大的CSS:模拟下雪效果动画制作教程

下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥. 1.前言 由于公司产品的活动,需要模拟类似下雪的效果.浏览器实现动画无非css3和canvas(还有gif),对比下css3和canvas的优缺点: 动画自由度:canvas胜: 复杂度:canvas胜: 兼容性:canvas胜: 性能:css3胜(requestAnimationFrame和硬件加速). 由于对于性能有一定的要求,canvas对比css3会有更多的计算

CSS:模拟下雪效果动画制作教程

下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥. 1.前言 由于公司产品的活动,需要模拟类似下雪的效果.浏览器实现动画无非css3和canvas(还有gif),对比下css3和canvas的优缺点: 动画自由度:canvas胜: 复杂度:canvas胜: 兼容性:canvas胜: 性能:css3胜(requestAnimationFrame和硬件加速). 由于对于性能有一定的要求,canvas对比css3会有更多的计算

关情纸尾-----Quartz2D定时器CADisplayLink下雪效果

定时器CADisplayLink下雪效果 1.定时器雪花整体思路: 先在控制器View面绘制一个雪花. 在View加载完毕后,添加一个定时器. 在定时器方法当中调用得绘方法. 在绘图方法当不段的去修改雪花的Y值. 当雪花的Y值超过屏幕的高度时,让雪花的Y值重新设为0.从最顶部开始. 2.添加定时器实现方案 第一种采用NSTime 第二种采用CADisplayLink 最终采用CADisplayLink方案. 2.1为什么采用CADisplayLink方案不用NSTime? 首先要了解setNee

再次推荐一款逼真的HTML5下雪效果

再次推荐一款逼真的下雪效果 效果图: 效果描述:之前推荐过一款下雪的jQuery插件之前的那款下降速度比较缓慢,今天推荐的这个下降速度比较快,大雪哇 使用方法:1.将index.html中的样式复制到你的样式表中2.将body中的代码部分拷贝到你需要的地方(注意保持图片.js文件路径的正确性) 查看效果:http://hovertree.com/texiao/jquery/36/ 下载地址 效果二 效果3 更多特效:http://www.cnblogs.com/roucheng/p/texiao

JavaScript之放大镜效果2

在放大图片效果的同时,我们怎么原图和放大窗体增加间隔呢? 我们只需应用一个table就行了: 源码上: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" con

桌面下雪效果

一个简单的下雪效果 MainWindow: 1.主界面通过DispatcherTimer给Grid生成雪花 2.雪花飘落后再讲雪花从Grid容器中移除 public partial class MainWindow { public MainWindow() { InitializeComponent(); Closing += (s, e) => ViewModelLocator.Cleanup(); Loaded += MainWindow_Loaded; } private void Ma

javascript实现五角星效果

<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>JQuery Adventures</title> <style> *{ padding:0; margin:0;} li { list-style:none;} #ul1 {

Rainyday.js – 使用 JavaScript 实现雨滴效果

Rainyday.js 背后的想法是创建一个 JavaScript 库,利用 HTML5 Canvas 渲染一个雨滴落在玻璃表面的动画.Rainyday.js 有功能可扩展的 API,例如碰撞检测和易于扩展自己的不同的动画组件的实现.它是一个使用 HTML5 特性纯 JavaScript 库,支持大部分现代浏览器. 在线演示      源码下载 您可能感兴趣的相关文章 网站开发中很有用的 jQuery 效果[附源码] 分享35个让人惊讶的 CSS3 动画效果演示 十分惊艳的8个 HTML5 &

今年最后一场“雪”:下雪效果讲解

每年年底,特别是在圣诞节,各大网站都玩起了“下雪”.在这弄一个,纪念:今年的结束,新年的开始.也祝福大家在新的一年里越来越好. 先看看效果(如果乱码或者不能查看 复制下面的代码保存在本地查看) <!doctype html> <html> <head> <meta charset="UTF-8"> <title>下雪</title> <style type="text/css"> *