jQuery的动画系统做的非常出色,而且把最常用的显示、隐藏、淡入淡出、滑动显示和折叠凳效果都做了很好的封装。跟jQuery的选择器和事件配合起来,可以实现很多很绚的效果,而且简单易用兼容性好。
jQuery的原型上的方法 show()方法可以实现让DOM元素进行显示动画。
show([speed,[easing],[fn]])
// 显示所有段落 // <p style="display: none">Hello</p> $("p").show() // 用缓慢的动画将隐藏的段落显示出来,历时600毫秒。 // <p style="display: none">Hello</p> $("p").show("slow"); // 用迅速的动画将隐藏的段落显示出来,历时200毫秒。并在之后执行反馈! // <p style="display: none">Hello</p> $("p").show("fast",function(){ $(this).text("Animation Done!"); }); // 将隐藏的段落用将近4秒的时间显示出来。。。并在之后执行一个反馈。。。 // <p style="display: none">Hello</p> $("p").show(4000,function(){ $(this).text("Animation Done..."); });
语法: hide([speed,[easing],[fn]])
隐藏动画的参数和使用跟show表现一致。在此就不赘述。
$("p").hide() // 用600毫秒的时间将段落缓慢的隐藏 $("p").hide("slow"); // 用200毫秒将段落迅速隐藏,之后弹出一个对话框。 $("p").hide("fast",function(){ alert("Animation Done."); });
语法:slideUp([speed,[easing],[fn]])
通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式隐藏起来。在jQuery 1.3中,上下的padding和margin也会有动画,效果更流畅。
参数跟show保持一致,不再赘述。
// 用600毫秒缓慢的将段落滑上 $("p").slideUp("slow"); // 用200毫秒快速将段落滑上,之后弹出一个对话框 $("p").slideUp("fast",function(){ alert("Animation Done."); });
语法: slideUp([speed,[easing],[fn]])
通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。
跟slideDown的语法保持一致。参数等不再赘述。
$("p").slideUp("slow"); // 用200毫秒快速将段落滑上,之后弹出一个对话框 $("p").slideUp("fast",function(){ alert("Animation Done."); });
语法:slideToggle([speed],[easing],[fn])
用法跟slideUp和slideDown保持一致。如果元素已经滑上去了,那么执行此方法就会滑下来。
由于淡入淡出的方法跟slide系列的方法保持一致。不赘述。
语法 | 功能 | 实例 |
---|---|---|
fadeIn([speed],[easing],[fn]) | 淡入效果 | $("p").fadeIn("slow"); |
fadeOut([speed],[easing],[fn]) | 淡出效果 | $("p").fadeOut("fast"); |
fadeToggle([speed],[easing],[fn]) | 切换淡入淡出 | $("p").fadeToggle("slow"); |
fadeTo([[speed],opacity,[easing],[fn]])
把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。
// 使用淡入效果来显示一个隐藏的 <p> 元素: $(".btn2").click(function(){ $("p").fadeIn(); }); // 用600毫秒缓慢的将段落的透明度调整到0.66,大约2/3的可见度 $("p").fadeTo("slow", 0.66); // 用200毫秒快速将段落的透明度调整到0.25,大约1/4的可见度,之后弹出一个对话框 $("p").fadeTo("fast", 0.25, function(){ alert("Animation Done."); });
jQuery封装了对css中数值属性的动画效果的封装,可以让开发人员对数值类的属性进行自定义的动画。
animate(params,[speed],[easing],[fn])
// 在一个动画中同时应用三种类型的效果 $("#go").click(function(){ $("#block").animate({ width: "90%", height: "100%", fontSize: "10em", borderWidth: 10 }, 1000 ); }); // 让指定元素左右移动 // HTML 代码: // <button id="left">«</button> <button id="right">»</button> // <div class="block"></div> // jQuery 代码: $("#right").click(function(){ $(".block").animate({left: '+50px'}, "slow"); }); $("#left").click(function(){ $(".block").animate({left: '-50px'}, "slow"); }); // 在600毫秒内切换段落的高度和透明度 $("p").animate({ height: 'toggle', opacity: 'toggle' }, "slow"); // 用500毫秒将段落移到left为50的地方并且完全清晰显示出来(透明度为1) $("p").animate({ left: 50, opacity: 'show' }, 500); // 一个使用“easein”函数提供不同动画样式的例子。只有使用了插件来提供这个“easein”函数,这个参数才起作用。 jQuery 代码: $("p").animate({ opacity: 'show' }, "slow", "easein");
语法:stop([queue],[clearQueue],[jumpToEnd])
停止所有在指定元素上正在运行的动画。如果队列中有等待执行的动画(并且clearQueue没有设为true),他们将被马上执行
参数:
// 停止当前正在运行的动画: $("#stop").click(function(){ $("#box").stop(); // 立即结束当前动画,并清空队列。 $("#box").stop(true, true); }); // 点击Go之后开始动画,点Stop之后会在当前位置停下来 // <button id="go">Go</button> <button id="stop">STOP!</button> // <div class="block"></div><button id="go">Go</button> <button id="stop">STOP!</button> // <div class="block"></div> // 开始动画 $("#go").click(function(){ $(".block").animate({left: '+200px'}, 5000); }); // 当点击按钮后停止动画 $("#stop").click(function(){ $(".block").stop(); });
finish( [queue ] )
停止当前正在运行的动画,删除所有排队的动画,并完成匹配元素所有的动画。当.finish()在一个元素上被调用,立即停止当前正在运行的动画和所有排队的动画(如果有的话),并且他们的CSS属性设置为它们的目标值(所有动画的目标值)。所有排队的动画将被删除。如果第一个参数提供,该字符串表示的队列中的动画将被停止。
.finish()方法和.stop(true, true)很相似,.stop(true, true)将清除队列,并且目前的动画跳转到其最终值。但是,不同的是,.finish() 会导致所有排队的动画的CSS属性跳转到他们的最终值。
// 停止当前正在运行的动画 $("#complete").click(function(){ $("div").finish(); });
设置一个延时来推迟执行队列中之后的项目。用于将队列中的函数延时执行。他既可以推迟动画队列的执行,也可以用于自定义队列。
// 在.slideUp() 和 .fadeIn()之间延时800毫秒。 // <div id="foo /"> $('#foo').slideUp(300).delay(800).fadeIn(400);
jQuery.fx.off
把这个属性设置为true可以立即关闭所有动画(所有效果会立即执行完毕)
jQuery.fx.interval = 100;
本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。
我来说两句