jQuery中自定义动画

简介: jQuery中自定义动画在上一篇文章当中,我们讲述了jQuery中自带的一些动画属性,但是在开发中,产品经理提出的一些需求靠这些自带的动画,往往是实现不了的,这个时候,我们就需要自定义动画了。

jQuery中自定义动画

在上一篇文章当中,我们讲述了jQuery中自带的一些动画属性,但是在开发中,产品经理提出的一些需求靠这些自带的动画,往往是实现不了的,这个时候,我们就需要自定义动画了。

1. 自定义动画

在jQuery中,自定义动画的方法是通过animate()方法来实现的,这个方法的参数是一个对象,对象中的属性是需要改变的样式,属性值是改变后的样式值。

$(selector).animate({params},speed,callback);

解释:

  • selector:必需。规定要添加动画效果的元素。
  • params:必需。规定形成动画效果的 CSS 属性集。[对象]
  • speed:可选。规定完成动画的时长。它可以取以下值:"slow"、"fast" 或毫秒。
  • callback:可选。在动画完成时所执行的函数名称。

注意看,在动画第二个参数中,我们传入的是一个对象,这个对象中的属性是需要改变的样式,属性值是改变后的样式值。

并且我们可以传入多个样式,来实现多个样式的动画。

1.1动画操作多个属性

我们可以通过animate()方式来为一个动画操作该元素的多个属性。

$('button').click(function(){
        $('div').animate({
            width:'300px',
            height:'300px',
            opacity:'0.5'
        },1000);
    });
复制代码

代码解释:

在上面的代码当中,我们为button绑定了一个点击事件,当点击button的时候,我们就会让div元素的宽度、高度、透明度都发生变化。

这里让这个动画在一秒内同时操作了div元素的宽度、高度、透明度,这样就实现了一个动画操作多个属性的效果。

1.2动画中属性使用相对值

是不是觉得每次为动画设置属性值很麻烦,因为这些都是基于浏览器默认的样式值,如果我们想要的效果是基于当前的样式值,那么我们就需要使用相对值来实现。

使用相对值的方法就是在元素属性值前面加上+=或者-=,这样就可以实现相对值的效果。

  • +=:表示相对于当前元素增加
  • -=: 表示相对于当前元素减少
$('button').click(function(){
        $('div').animate({
            width:'+=300px',
            height:'+=300px',
        },1000);
    });
复制代码

代码解释:

在上面的代码中,我们将div元素的宽度和高度都设置为相对值,将这个div元素的宽度和高度都增加300px。

1.3动画中的队列功能

其实在jQuery中,我们还可以同时为一个元素设置多个动画,这样就可以实现一个元素的多个动画效果。

并且这些多花按照从上之下的顺序依次执行。

$('button').click(function(){
        var div=$('div');
        div.animate({
            width:'300px',
            height:'300px',
            opacity:'0.5'
        },1000);
        div.animate({
            width:'600px',
            height:'600px',
            opacity:'1'
        },1000);
    });
复制代码

这样极大的提高了我们的开发效率。

2.动画停止

在动画执行的过程中,我们可以随时停止。

停止动画我们需要用到stop方法。

$(selector).stop(stopAll,goToEnd);

  • 什么参数也没有:停止当前正在执行的动画,但是不清除队列中的动画。
  • 只有一个stopAll参数,当参数为true:停止当前正在执行的动画,并且清除队列中的动画;当参数为false:停止当前正在执行的动画,但是不清除队列中的动画。
  • goToEnd参数:当参数为true:停止当前正在执行的动画,并且清除队列中的动画,并且将动画的属性值设置为最终的值;当参数为false:停止当前正在执行的动画,但是不清除队列中的动画。
$(document).ready(function(){
    $("#btn1").click(function(){
        $("#panel").slideDown(5000);
    });
    $("#bnt2").click(function(){
        // $("#panel").stop();
        // $("#panel").stop(true);
        // $("#panel").stop(false);
        // $("#panel").stop(true,true);
        $("#panel").stop(false,true);
    });
});
复制代码

上面停止动画的代码中,从上至下,我们分别使用了不同的参数来停止动画,可以看到不同的效果。

3.动画回调函数

在一些开发中,我们希望在动画完成之后,来执行一些操作,这时候我们就需要使用到动画回调函数。

动画里面的回调函数,只会在动画执行完毕之后,才会被调用,这就避免了在动画执行的过程中,执行回调函数。

$('button').click(function(){
        $('div').animate({
            width:'300px',
            height:'300px',
            opacity:'0.5'
        },1000,function(){
            alert('动画执行完毕');
        });
    });
复制代码

代码解释:

上面的代码中,在动画执行完毕之后,会弹出一个提示框,提示动画执行完毕。


相关文章
N..
|
5月前
|
JavaScript 前端开发 UED
jQuery动画特效
jQuery动画特效
N..
64 1
|
5月前
|
JavaScript
jquery动画与事件案例
jquery动画与事件案例
|
5月前
|
机器学习/深度学习 JavaScript
|
9天前
|
JavaScript 前端开发 UED
jQuery 动画
【10月更文挑战第8天】
105 55
|
4月前
|
移动开发 JavaScript 前端开发
老程序员分享:jQuery笔记(四)jQuery中的动画
老程序员分享:jQuery笔记(四)jQuery中的动画
45 0
|
1月前
|
JavaScript
jQuery 停止动画
jQuery 停止动画
15 4
|
1月前
|
缓存 JavaScript 前端开发
jQuery 效果- 动画
jQuery 效果- 动画
21 4
|
1月前
|
JavaScript 前端开发
jQuery 效果- 动画
jQuery 效果- 动画
39 11
|
1月前
|
JavaScript
jQuery 停止动画
jQuery 停止动画
24 11
|
2月前
|
JavaScript 前端开发
如何在Vue2.X/Vue3.X项目引入jQuery,以及增加jQuery.easing扩展?让你的动画效果更加丝滑!
如何在Vue 2或Vue 3项目中引入jQuery及其动画扩展库jQuery.easing,以实现更丰富的动画效果。
141 0
如何在Vue2.X/Vue3.X项目引入jQuery,以及增加jQuery.easing扩展?让你的动画效果更加丝滑!