详解JQuery动画

        我这是我在逆战班学习js的第六周,今天让我来给大家解释一下jQuery框架中的jQuery动画的应用及方式

        jQuery动画可以分为内置动画和自定义动画,下面让我们用代码来说明它的用法

一、jQuery动画的属性及功能

    1、animate(): 自定义动画效果的动画
    2、stop(): 停止动画
    3、delay:延迟执行动画
    4、finish():直接运动到最后一个动画的终点

二、jQuery动画的参数

    1、animate()参数详解:
     (1)参数一:动画持续的时间,默认:400毫秒 (必须写)
     (2)参数二:运动速度,也叫运动方式:默认:swing(慢快慢) (选写)
     (3)参数三:回调函数 (选写)

    2、stop()参数详解
     (1)参数一: true 删除队列
                   false 没有删除队列

     (2)参数二: true 当前动画立即运动到终点
                   false 当前动画立即停止

    3、delay()参数详解
       直接就是延迟及时间

三、jQuery中常见的集中内置动画

    1、隐藏显示功能动画
     (1)hide()方法主要功能是将元素隐藏起来,前提要执行hide()方法的元素必须是显示的,能看见,也就是状态为display:block。如果元素执行hide()方法时没有参数,则该元素将被立即隐藏,没有动画效果,所以在执行时要写个时间参数,单位毫秒。再次hide方法执行过程中是把选中DOM元素的宽、高、透明度同时执行。

     (2)show()方法主要功能是将元素显示起来,前提要执行show()方法的元素必须是隐藏的,看不见,也就是状态为display:none。如果元素执行show()方法时没有参数,则该元素将被立即显示,没有动画效果,所以在执行时要写个时间参数,单位毫秒。再次show()方法执行过程中是把选中DOM元素的宽、高、透明度同时执行。

     (3)toggle()方法主要功能是元素的显示和隐藏之间的切换,它的功能是hide()方法和show()方法功能的组合,在执行时,先判断元素的状态,如果元素本身的状态是隐藏,那么它显示,如果元素本身状态为显示,那么它隐藏。如果没有参数,隐藏或显示将立即执行,内有动画效果。

     代码如下:

// (1) show() 显示动画 如果元素本身是display: none状态, 可以显示出来
$(" #btn").click(function(){
     $(" #box"). show( 200, "linear", function(){
            alert("动画结束了");
     });
})
  
// (2)、hide() 隐藏动画如果元素本身是display:block的状态可以隐藏起来
$(" #btn").click(function(){
     $(" #box"). hide( 200, "linear", function(){
            alert("动画结束了");
     });
})
 // (3)、toggle动画 隐藏显示切换动画 如果元素本身是显示那么隐藏,如果本身是隐藏那么显示
$(" #btn").click(function(){
    $(" #box"). toggle( 200, "linear", function(){
            alert("动画结束了");
    });
})

    2、下拉上拉功能动画
     (1)slideDown()方法主要功能是元素的下拉,也可以理解为下拉显示,前提要执行slideDown()方法的元素必须是隐藏的,看不见。如果没有参数,他的持续时间默认为400毫秒,它在执行过程中是改变元素的宽高。

     (2)slideUp()方法主要功能是元素的上拉,也可以理解为上拉隐藏,前提要执行slideUp()方法的元素必须是现实的,能看见。如果没有参数,他的持续时间默认normal ,代码400毫秒的延时,它在执行过程中是改变元素的宽高。

     (3)slideToogle()方法的主要功能是元素的下拉或上拉,也可以理解为下拉显示或上拉隐藏,在执行时,先判断元素的状态,如果元素本身的状态是隐藏,那么它下拉显示,如果元素本身状态为显示,那么它上拉隐藏。如果没有参数,他的持续时间默认值为normal ,代码400毫秒的延时,它在执行过程中是改变元素的宽高。

     代码如下:

// (1)slideDown动画 下拉显示 元素本身隐藏,下拉 显
$(" #btn").click(function(){
     $(" #box"). slideDown( 200, "linear", function(){
            alert("动画结束了");
     });
})
 
// (2)slideUp动画 上拉隐藏 元素本身显示,上拉隐藏
$(" #btn").click(function(){
     $(" #box"). slideUp( 200, "linear", function(){
            alert("动画结束了");
     });
})

// (3)slideToogle动画 上下切换动画 如果元素本身 显示则上拉隐藏,下拉显示
$(" #btn").click(function(){
     $(" #box"). slideToogle( 200, "linear", function(){
            alert("动画结束了");
     });
})

    3、渐隐渐显动画
     (1)fadeIn()方法的主要功能是元素的显示,前提要执行fadeIn()方法的元素必须是隐藏的,看不见。如果没有参数时,它的持续时间默认为400毫秒,它的执行方式是,改变元素的透明度。

     (2)fadeOut()方法的主要功能是元素的隐藏,前提要执行fadeOut()方法的元素必须是显示的,看的见。。如果没有参数时,它的持续时间默认为400毫秒,它的执行方式是,改变元素的透明度。

     代码如下:

// (1)fadeIn动画 逐渐显示动画(淡入)元素本身隐藏
$(" #btn").click(function(){
    $(" #box").fadeIn( );
})

// (2)fadeOut动画 逐渐 隐藏动画(淡出)元素本身显示
$(" #btn").click(function(){
    $(" #box").fadeOut( );
})

// (3)fadeToogle动画 渐隐渐现动画
$(" #btn").click(function(){
    $("#box"). fadeToggle(200,"linear" , function(){
            alert("动画结束了")
    });
})

     (3)fadeTo动画 它的主要功能是淡出和淡入,它在执行淡出和淡入功能时执行的是自身元素的透明度,有参数二控制执行到多少的透明度,它有两个必须要写的参数,参数一,动画时序时间,参数二是要改变到多少的透明度,注意透明度在0~1之间(此时第二个参数为透明度)。

     代码如下:

$(" #btn").click(function(){
    $("#box"). fadeTo(1000,0.2,"linear" , function(){
            alert("动画结束了")
    });
}) 

四、自定义动画

需求:让一个小方块沿四个边缩小,并在中心消失
通过控制元素的left,right,top,bottom等方向的像素,以一定的时间和速度来运动,达到视觉效应的动画,在项目中按照自己要达到的效果设计相应的参数,注意给那个元素加自定义动画,这个元素要设置定位

     代码如下:

$("#btn").click(function(){
       $("#box").animate({
            width:0,
            height:0,
            left:50,
            top:80
       },2000,function(){
            alert("自定义动画结束了");
       });
})

五、动画的控制

    1、delay():延迟执行动画
       执行动画延迟时,可以传入参数,其参数主要弄功能是用于设定队列中下一个动画的延迟执行时间,持续的时间是以毫秒为单位,默认400毫秒的延时

     代码如下:

$("#btn").click(function(){
      $("#box").delay(2000).animate({
           left:1000
      }).delay(1000).animate({
           top:600
      }).delay(3000).animate({
           left:0
      }).delay(4000).animate({
           top:30
      })
})

    2、stop(): 停止动画
       Stop()的方法主要是停止动画的执行,他有两个参数,都为布尔值,其功能如下: 
            stop(false,false)表示停止执行当前动画,队列中后续动画接着进行
          stop(true,false)表示停止执行当前动画,队列中后续动画不再进行
          stop(false,true)表示当前动画立即完成,队列中后续动画接着进行
          stop(true,true)表示当前动画立即完成,队列中后续动画不再进行

     代码如下:

// btn,启动动画的按钮,点击按钮动画启动
$("#btn").click(function(){
      $("#box").animate({
           left:1000
      }).animate({
           top:600
      }).animate({
           left:0
      }).animate({
           top:30
      })
}) 

// btn1,停止动画按钮,点击按钮动画停止
$("#btn1").click(function(){
    $("#box").stop(true,false);
})

    3、finish():直接运动到最后一个动画的终点
       finish()方法的功能为停止当前正在运行的动画,删除所有排队的动画,其功能和stop(true,true)功能相似,清除队列,并且当前正在执行的动画跳转到其最终值。

     代码如下:

// btn,启动动画的按钮,点击按钮动画启动
$("#btn").click(function(){
      $("#box").animate({
           left:700
      }).animate({
           top:500
      }).animate({
           left:0
      }).animate({
           top:30
      })
}) 

// btn1,停止动画按钮,点击按钮动画停止
$("#btn1").click(function(){
    $("#box").finish();
})

六、动画的执行顺序(不同元素间的同步执行)

    需求:box1的方块先走,box2的方块在box1方块运动完毕后运动

    控制box1和box2的一前一后运动,当box1第一的动画到达终点后,box2执行第一个动画,然后依次执行box1的第二个动画,box2的第二个动画…当前一个元素动画结束后,后一个元素在执行动画,存在异步,可利用回调地狱执行,有因其存在异步,可利用JS中的Promise解决回调地狱中的异步

     (1)利用回调地狱解决

     代码如下:

// #btn,启动动画的按钮,点击按钮动画启动
// #box,是要执行动画的第一个小方块
// #box1,是要执行动画的第二个小方块

$("#btn").click(function(){
    $("#box").animate({
         left:600
     },function(){
        $("#box1").animate({
            left:500     
        },function(){
            $("#box").animate({
               top:600
            },function(){
                $("#box1").animate({
                   top:500
                },function(){
                    $("#box").animate({
                       left:0
                    },function(){
                        $("#box1").animate({
                             left:100
                        },function(){
                             $("#box").animate({
                                top:30
                             },function(){
                                $("#box1").animate({
                                   top:130
                                })
                            })
                        })
                    })
                })
            })
        })
    })
})

     (2)利用Promise解决回调地狱,封装

     代码如下:

// 验证
move($("#box"),{
   left:600
}).then(()=>{
   return move($("#box1"),{
         left:500
   })  
}).then(()=>{
   return move($("#box"),{
         top:600
   })  
}).then(()=>{
   return move($("#box1"),{
         top:500
   })  
}).then(()=>{
   return move($("#box"),{
         left:0
   })  
}).then(()=>{
   return move($("#box1"),{
         left:100
   })  
}).then(()=>{
   return move($("#box"),{
         top:30
   })  
}).then(()=>{
   return move($("#box1"),{
         top:130
   })  
})

// 封装函数
function move(ele,tar,tim){
     time = time || 300;
     return new Promise((resolve)=>{
           ele.animate(tar,time,()=>{
                resolve("动画已结束");
           });
     })     
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值