首页 > 建站教程 > JS、jQ、TS >  jQuery高级动画animate()函数详解正文

jQuery高级动画animate()函数详解

jquery的动画非常强大,如slideDown()、slideUp()等等。但是最强大的还是animated()动画。下面就详细介绍这个函数。
一、语法:animate(params, speed, callback);
      参数说明如下:
      (1).params:一个包含样式属性及值的映射,比如{property1:”value1″, property2:”value2″,…}
      (2).speed:速度参数,可选。
      (3).callback:在动画完成时执行的函数,可选。

为了能够配合说明animate(),我们先做如下假设:
有一个空白的HTML文档,里面有一个id=”panel”的div元素
二、自定义简单动画
点击这个div能在页面上横向飘动,我们可以写入下面的jQuery代码:
$(function () {
    $("#panel").click(function () {
        $(this).animate({
            left: "500px"
        }, 3000);
    });
});
在本段代码中,首先为id 为“panel”的元素创建一个单击事件,然后对元素加入animate()方法,使元素在3秒(3000毫秒)内,向右移动500像素。
为了使元素动起来,要更改元素的“left”样式属性。需要注意的是在使用animate()方法之前,为了能够影响该元素的“top”、”left”、”bottom”、”right”样式属性,必须先把元素的poation样式设置为“relative”或者“absolute”。
三、累加、累减动画
在之前的代码中,设置了{left:”500px”}作为动画参数。如果在500px之前加上“+=”或者“-=”符号即表示在当前位置累加或者累减。代码如下:
$(function () {
    $("#panel").click(function () {
        $(this).animate({
            left: "+=500px"
        }, 300); //在当前位置累加500px
    });
});
四、多重动画
(1)同时执行多个动画
在上面的例子中,通过控制属性left的值实现了动画的效果,这是一个很简单的动画。如果需要同时执行多个动画,例如在元素向右动画的同时,放大元素的高度。根据animate()方法的语法结构,可以写出如下的jQuery代码:
$(function () {
    $("#panel").click(function () {
        $(this).animate({
            left: "500px",
            height: "200px"
        }, 3000);
    });
});
运行代码后,div元素在向右华东的同时,也会放大高度。
(2).按顺序执行多个动画
如果想要按顺序执行动画,只需要将代码拆开,然后按照顺序写法就可以了,jQuery代码如下:
$(this).animate({left:"500px"},3000);
$(this).animate({height:"200px"},3000);
因为animate()方法都是对同一个jQuery对象进行操作,所以可以改为链式写法,代码如下:
$(this).animate({
    left: "500px"
}, 3000);.animate({
    height: "200px"
}, 3000);
五、综合动画
接下来将完成更复杂的动画。单击div元素后让它向右移动的同时增大它的高度,并将它的不透明度从50%变换到100%,然后在让它从上到下移动,同时它的宽度变宽,当完成这些效果后,让它可以淡出的方式隐藏。
实现这些功能的jQuery代码如下:
$(function () {
    $("#panel").css("opacity", "0.5");
    $("#panel").click(function () {
        $(this).animate({
            left: "400px",
            height: "200px",
            opacity: "1"
        }, 3000).animate({
            top: "200px",
            width: "200px"
        }, 3000).fadeOut("slow");
    });
});
运行代码后,动画效果一步步执行完毕。通过这个例子可以看出,为同一元素应用多重效果时,可以通过链式方法对这些效果进行排队。