zoukankan      html  css  js  c++  java
  • 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+'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来实现。

  • 相关阅读:
    java字符串的遍历以及字符串中各类字符的统计
    Java Jvm运行机制原理
    为什么面试要问 hashmap 的原理
    HashMap的实现原理
    redis两种持久化方式的优缺点
    2018No-java面试知识
    从架构演进的角度聊聊spring cloud都做了些什么?
    MySQL索引优化
    2018java面试知识汇总
    多线程—7种同步方法
  • 原文地址:https://www.cnblogs.com/zjjDaily/p/8472579.html
Copyright © 2011-2022 走看看