基础js实现下雨效果(超简单)

今天学习了定时器的做法,于是想着使用setInterval()做个简单的东西。

下面直接上代码(完整)

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>小迪</title>
    <style>
        body {
            width: 100wh;
            height: 100vh;
            background: url(img/background.jpg); //背景图可以直接使用rgb
        }
    </style>
</head>
<body>
    <script>
        setInterval(function () {
            var rain = document.createElement("div");
            rain.style.position = "fixed";
            rain.style.height = 150+"px";
            rain.style.width = "2px";
            rain.style.background = "white"; //可以使用雨滴图片代替,懒没找
            rain.style.filter = "blur(1px)"
            rain.style.top = "0px";
            rain.style.opacity = parseInt(Math.random()*10)/10;
            rain.style.left = Math.random() * 1920 + "px";
            document.body.appendChild(rain);
            var t = 1;
            var timer = setInterval(function () {
                var height = parseInt(rain.style.top);
                t++;
                rain.style.top = height + 2 * (Math.pow(t, 2)) + "px";      // 模拟物体下落的公式
                if (parseInt(rain.style.top) >= 900) {
                    clearInterval(timer);                            //删掉也可以,直接移除元素就不用停止循环调用
                    rain.remove();
                }
            },20)
        },10)
    </script>
</body>
</html>

下面是一张瞬时图:

做一下简单的说明

主要使用setInterval()的二层嵌套,循环生成元素rain,产生多个rain元素,随机生成在屏幕的顶端,再逐渐下落,超过屏幕的rain就使用clearInterval()使他停止下落,再将rain元素删除,如此循环。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值