在下面这段代码实现的动画中,元素的width和height是同时改变的。如果我们想要“先”改变宽度,“后”改变高度的话,这种方式就没办法实现了,而需要借助队列动画才可以实现。
$("div").click(function(){
$(this).animate({"width":"100px",height:"100px"});
})
在jQuery中,队列动画,指的是元素按照一定的顺序来执行多个动画效果。
语法:
$().animate().animate().…….animate()
说明:
队列动画,其实就是按照animate()方法调用的先后顺序来实现的,原理非常简单。
举例:队列动画
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
div
{
width:50px;
height:50px;
background-color:lightskyblue;
}
</style>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
$("div").click(function () {
$(this).animate({ "width": "150px"}, 1000).animate({ "height": "150px" }, 1000);
})
})
</script>
</head>
<body>
<div></div>
</body>
</html>
默认情况下,预览效果如下图所示。
当我们点击div元素后,此时预览效果如下图所示。
分析:
在这个例子中,元素会先改变宽度,然后再改变高度。也就是执行完第一个animate()方法后,才会去执行第二个animate()方法。
举例:复杂的队列动画
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
div
{
width:50px;
height:50px;
background-color:lightskyblue;
}
</style>
<script src="js/jquery-1.12.4.min.js"></script>
<script>
$(function () {
$("div").click(function () {
$(this).animate({ "width": "150px", "height": "150px"}, 1000).fadeOut(1000).fadeIn(1000);
})
})
</script>
</head>
<body>
<div></div>
</body>
</html>
默认情况下,预览效果如下图所示。
当我们点击div元素后,此时预览效果如下图所示。
分析:
这里实现了一个比较复杂的队列动画:第1个动画是用animate()方法改变元素的宽高;第2个动画是用fadeOut()方法实现元素的淡出效果;第3个动画是用fadeIn()方法实现元素的淡入效果。
可能小伙伴会问:“队列动画不是按animate()方法的先后顺序执行的吗?为什么像fadeOut、fadeIn()这种也能加入到动画队列中呢?”这是因为fadeOut、fadeIn()也属于动画,本质上也是使用animate()来实现的。
在jQuery中,队列动画可以是任何动画形式,包括:
- (1)显示与隐藏
- (2)淡入与淡出
- (3)滑上与滑下
- (4)自定义动画