[TOC]
一、三组基本动画
- 显示(show)与隐藏(hide)是一组动画:
- 滑入(slideUp)与滑出(slideDown)与切换(slideToggle),效果与卷帘门类似
- 淡入(fadeIn)与淡出(fadeOut)与切换(fadeToggle)
- stop() 停止正在进行的动画 ```javascript $obj.show([speed], [callback]); // speed(可选):动画的执行时间 // 如果不传,就没有动画效果。如果是slide和fade系列,会默认为normal // 毫秒值(比如1000),动画在1000毫秒执行完成(推荐) // 固定字符串,slow(600)、normal(400)、fast(200),如果传其他字符串,则默认为normal。 // callback(可选):执行完动画后执行的回调函数
slideDown()/slideUp()/slideToggle();同理 fadeIn()/fadeOut();fadeToggle();同理
```javascript
$(document).ready(function(){
$("#b1").click(function(){
$("#b1Div").toggle("1000");
});
$("#b2").click(function(){
$("#b2Div").slideToggle("slow");
});
$("#b3").click(function(){
$("#b3Div").fadeToggle("slow");
});
});
示例:
逐个隐藏
<input type="button" value="隐藏动画" id="btn1"/>
<input type="button" value="显示动画" id="btn2"/>
<div>
<img src="images/11.jpg"/>
<img src="images/12.jpg"/>
<img src="images/13.jpg"/>
<img src="images/14.jpg"/>
</div>
<style>
div{
width: 400px;
}
img{
width:90px ;
height:90px;
vertical-align: top;
}
</style>
<script>
//一起隐藏
$(function () {
$("#btn1").click(function () {
//回调函数
$("div>img").hide(1000,function () {
alert("结束了");
});
});
$("#btn2").click(function () {
//回调函数
$("div>img").show(1000,function () {
alert("结束了====");
});
});
});
</script>
<script>
//逐个隐藏
$(function () {
$("#btn1").click(function () {
//获取div,最后一个图片,隐藏
$("div>img").last("img").hide(800,function () {
//arguments.callee相当于当前的函数
$(this).prev().hide(800,arguments.callee);
});
});
//显示
$("#btn2").click(function () {
$("div>img").first("img").show(800,function () {
//arguments.callee相当于当前的函数
$(this).next().show(800,arguments.callee);
});
});
});
</script>
二、自定义动画
- animate 自定义动画
示例:$(selector).animate({params},[speed],[easing],[callback]); // {params}:要执行动画的CSS属性,带数字(必选) // speed:执行动画时长(可选) // easing:执行效果,默认为swing(缓动) 可以是linear(匀速) // callback:动画执行完后立即执行的回调函数(可选)
盒子放大缩小 ```javascript
<a name="ueUma"></a>
## 三、动画队列与停止动画
在同一个元素上执行多个动画,那么对于这个动画来说,后面的动画会被放到动画队列中,等前面的动画执行完成了才会执行(联想:火车进站)。
```javascript
// stop方法:停止当前正在进行的动画
stop(clearQueue, jumpToEnd);
// 第一个参数:可选。代表是否要清空未执行完的动画队列。
// 第二个参数:可选。代表是否直接将正在执行的动画跳转到当前动画的末尾。
// 如果不写参数,默认两个都是false
##1.stop基本使用以及stop第二个参数的含义
//stop() 是停止当前正在进行的动画
//stop有两个参数
//1.是否清空动画队列
//2.是否让要停止的那个动画跳转到动画结束的位置
//3.如果上面两个参数都没有写,那么默认都是false
var $box = $("#box");
$box.animate({"width":100,"height":100},3000);
$box.stop(false,true).animate({"width":500,"height":500},3000);
##2.动画队列
var $box = $("#box");
$box.animate({"width":100,"height":100},3000);
$box.animate({"width":500,"height":500},3000);
//下面代码stop的意思:让2行的动画立刻停止,同时让当前box来到动画结束的状态(宽高都是100)
//当2行动画停止并且来到动画结束的状态之后,因为现在的动画队列里面有3行和4行两个动画,所以会先执行3行的动画
$box.stop(false,true).animate({"width":400,"height":400},3000);
##3.清除动画队列
var $box = $("#box");
$box.animate({"width":100,"height":100},3000);
$box.animate({"width":500,"height":500},3000);
//下面代码stop的意思:让第2行的动画立刻停止,同时让当前box来到动画结束的状态(宽高都是100)。再然后清空当前
//动画队列里面的所有动画(当前动画队列里面只有3行的动画,所以会将3行的动画清理掉)
// 当上面的操作完成之后,再开启下面的动画
$box.stop(true,true).animate({"width":400,"height":400},3000);