jq模仿雨滴下落的动画

效果如图:

 

实现思路:定时器每隔x秒生成宽高、下落速度(即动画执行时间)、left随机的div。

1.CSS:

body{
    overflow: hidden;/*这是为了防止出现滚动条*/
}
.com{
    border-radius: 0 50% 50% 50%;
    background: skyblue;
    transform: rotate(45deg);
    position: absolute;
    top: 0;
}

 

2.JS:

$(function(){
    var obj={
        maxW:100,//最大宽度
        minW:10,//最小宽度
        maxSpeed:10000,//最大速度,单位ms
        creat:400//创建雨滴个数的快慢,单位ms
    }
    rain(obj)
})
function rain(obj){
    var maxW=obj.maxW;
    var minW=obj.minW;
    var maxSpeed=obj.maxSpeed;
    var time=obj.creat;
    
    var maxLeft=$(window).width();

    var time1;
    var j=0;
    time1=setInterval(function(){
        var width=Math.random()*maxW;//随机宽度
        width=width.toFixed(2);
        if(width<minW){
            width=minW;
        }
        
        var left=Math.random()*maxLeft-width;//随机left值
        left=left.toFixed(2);
        if(left<0){
            left=0;
        }
        j++;
        
        var speed=Math.random()*maxSpeed;//随机速度
        
        var item='<div class="com rain'+j+'" style="left:'+left+'px;width:'+width+'px;height:'+width+'px"></div>';//创建雨滴
            
        $("body").append(item);
            
        move($(".rain"+j),speed);//雨滴移动
    },time)
}
function move(op,speed){
    var winH=$(window).height();
    var maxH=winH+op.height();//雨滴下落的高度,页面高度加上自身高度就能看到完全落到最底部
        
    op.animate({
        "top":maxH+"px"
    },speed,function(){
        op.remove();//删除该雨滴
    });
}

 本来最开始想计算雨滴left和下落高度的最大值,以免出现滚动条,但是后来想直接body加个overflow:hidden不是更好么,省去多余的代码,效果还一样。

除了用JS实现,还可以用canvas来实现。

 

转载于:https://www.cnblogs.com/zjjDaily/p/8472579.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值