jQuery中的动画方法
- hide() 和 show() 隐藏或显示
同时修改多个样式即高度、宽度、不透明度 - fadeIn() 和 fadeOut() 只改变不透明度
- slideUp() 和 slideDown() 只改变高度
- toggle() 用来代替hide()和show()方法,所以会同时修改多个样式即高度、宽度。不透明度
- slideToggle() 用来代替slideUp() 和 slideDown() 所以只能改变高度
- animate() 自定义动画方法,直接使用animate() 方法 还能自定义其它的样式属性
例如:“left”,“marginLeft”,“scrollTop”
animate() 方法
语法:$(selector).animate({params},speed,callback);
- 必需的 params 参数定义形成动画的 CSS 属性。
- 可选的 speed 参数规定效果的时长。它可以取以下值:“slow”、“fast” 或毫秒。
- 可选的 callback 参数是动画完成后所执行的函数名称。
$("div").click(function(){
$(this).animate({
left:"500px",
top:"200px",
},1000,function(){
$(this).css("width","500px")
})
})
多重动画
$("div").click(function(){
$(this).animate({left:"500px",top:"0"},1000)
.animate({left:"500px",top:"200px"},1000)
.animate({left:"0",top:"200px"},1000)
.animate({left:"0",top:"0"},1000)
})
动画队列
(1)一组元素上的动画效果当在一个 animate()方法中应用多个属性时,动画是同时发生的。
当以链式的写法应用动画方法时,动画是按照顺序执行的
(2)多组元素上的动画效果
默认情况下,动画都是同时发生的。当以回调的形式应用动画方式时,动画是按照回调)另外,在动画方法中,要注意其他非动画方法会插!按照顺序执行,需要把这些方法写在动画方法的回调函数中
$("#panel").click(function(){
$(this).animate({left:"400px",height:"200px",opacity:"1"},3000)
.animate({top:"200px",width:"200px"},3000,function(){
$(this).css("border","5px solid blue")
})
})
stop()
stop()函数用于停止当前匹配元素上正在运行的动画。
- 默认情况下,stop()函数只会停止当前正在运行的动画。
- 停止动画并不是恢复到该动画执行前的状况,而是直接停止,当前动画执行到什么状态,就停留在什么状态。
语法:
$(selector).stop(clearQueue,goToEnd) clearQueue,goToEnd均为可选布尔值参数
1、clearQueue可选。代表是否要清空未执行完的动画队列。
$(selector).stop(true)则会停止所有后续动画或事件。
$(selector).stop(false),则只停止当前执行的动画,后续动画不受影响。
$(selector).stop( )则会停止当前的动画,以当前状态开始接下来的动画。
2、goToEnd
$(selector).stop(true,true)。直接将正在执行的动画跳转到当前动画的末尾。
- 默认情况下,不写参数,则会被认为两个参数都是false。
$("button:eq(0)").click(function(){
$("#panel").animate({
height:"150px"
},1000)
.animate({
width:"300px"
},1000)
.hide(2000)
.animate({
height:"show",
width:"show",
opacity:"show"
},1000)
.animate({
height:"500px",
width:"500px",
},1000)
})
$("button:eq(1)").click(function(){
$("#panel").stop(); //停止当前动画,继续下一个动画
});
$("button:eq(2)").click(function(){
$("#panel").stop(true); //清除元素的所有动画[立即停止]
});
$("button:eq(3)").click(function(){
$("#panel").stop(false,true); //让当前动画直接到达末状态,继续下一个动画
})
$("button:eq(4)").click(function(){
$("#panel").stop(true,true); //清除元素的所有动画,让当前动画直接到达末状态
})