首页 > 代码库 > jQuery 动画效果
jQuery 动画效果
在以前很长一段时间里,网页上的各种特效还需要采用 flash 在进行。但最近几年里, 我们已经很少看到这种情况了,绝大部分已经使用 JavaScript 动画效果来取代 flash。这里 说的取代是网页特效部分,而不是动画。网页特效比如:渐变菜单、渐进显示、图片轮播等; 而动画比如:故事情节广告、MV 等等。
一.显示、隐藏
jQuery 中显示方法为:.show()
,隐藏方法为:.hide()
。在无参数的时候,只是硬性的显 示内容和隐藏内容。
$(‘.show‘).click(function(){ //显示 $(‘#box‘).show(); }); $(‘.hide‘).click(function(){ //隐藏 $(‘#box‘).hide(); });
注意:.hide()
方法其实就是在行内设置 CSS 代码:display:none
; 而.show()
方法要根据原 来元素是区块还是内联来决定,如果是区块,则设置 CSS 代码:display:block
; 如果是内联, 则设置 CSS 代码:display:inline
;。
在.show()
和.hide()
方法可以传递一个参数,这个参数以毫秒(1000 毫秒等于 1 秒钟)来控 制速度。并且里面富含了匀速变大变小,以及透明度变换。
$(‘.show‘).click(function(){ $(‘#box‘).show(1000); //显示用了 1 秒 }); $(‘.hide‘).click(function(){ $(‘#box‘).hide(1000); //隐藏用了 1 秒 });
除了直接使用毫秒来控制速度外,jQuery 还提供了三种预设速度参数字符串:slow、 normal 和 fast,分别对应 600 毫秒、400 毫秒和 200 毫秒。
$(‘.show‘).click(function(){ $(‘#box‘).show(‘fast‘); //200 毫秒 }); $(‘.hide‘).click(function(){ $(‘#box‘).hide(‘slow‘); //600 毫秒 });
注意:不管是传递毫秒数还是传递预设字符串,如果不小心传递错误或者传递空字符串。 那么它将采用默认值:400 毫秒。
$(‘.show‘).click(function(){ $(‘#box‘).show(‘‘); //默认 400 毫秒 }); //使用.show()和.hide()的回调函数,可以实现列队动画效果。 $(‘.show‘).click(function(){ $(‘#box‘).show(‘slow‘,function(){ alert(‘动画持续完毕后,执行我!‘); }); }); //列队动画,使用函数名调用自身 $(‘.show‘).click(function(){ $(‘div‘).first().show(‘fast‘, function showSpan(){ $(this).next().show(‘fast‘,showSpan); }); }); //列队动画,使用 arguments.callee 匿名函数自调用 $(‘.hide‘).click(function(){ $(‘div‘).last().hide(‘fast‘,function(){ $(this).prev().hide(‘fast‘,arguments.callee); }); });
我们在使用.show()和.hide()的时候,如果需要一个按钮切换操作,需要进行一些条件判 断。而 jQuery 提供给我们一个类似功能的独立方法:.toggle()。
$(‘.toggle‘).click(function(){ $(this).toggle(‘slow‘); });
二.滑动、卷动
jQuery 提供了一组改变元素高度的方法:.slideUp()、.slideDown()和.slideToggle()
。顾名 思义,向上收缩(卷动)和向下展开(滑动)。
$(‘.down‘).click(function(){ $(‘#box‘).slideDown(); }); $(‘.up‘).click(function(){ $(‘#box‘).slideUp(); }); $(‘.toggle‘).click(function(){ $(‘#box‘).slideToggle(); });
注意:滑动、卷动效果和显示、隐藏效果一样,具有相同的参数。
三.淡入、淡出
jQuery 提供了一组专门用于透明度变化的方法:.fadeIn()和.fadeOut()
,分别表示淡入、 淡出,当然还有一个自动切换的方法:.fadeToggle()
。
$(‘.in‘).click(function(){ $(‘#box‘).fadeIn(‘slow‘); }); $(‘.out‘).click(function(){ $(‘#box‘).fadeOut(‘slow‘); }); $(‘.toggle‘).click(function(){ $(‘#box‘).fadeToggle(); });
上面三个透明度方法只能是从 0 到 100,或者从 100 到 0,如果我们想设置指定值就没 有办法了。而 jQuery 为了解决这个问题提供了.fadeTo()
方法。
$(‘.toggle‘).click(function(){ $(‘#box‘).fadeTo(‘slow‘,0.33); //0.33 表示值为 33 });
注意:淡入、淡出效果和显示、隐藏效果一样,具有相同的参数。对于.fadeTo()方法, 如果本身透明度大于指定值,会淡出,否则相反。
四.自定义动画
jQuery 提供了几种简单常用的固定动画方面我们使用。但有些时候,这些简单动画无法 满足我们更加复杂的需求。这个时候,jQuery 提供了一个.animate()
方法来创建我们的自定 义动画,满足更多复杂多变的要求。
$(‘.animate‘).click(function(){ $(‘#box‘).animate({ ‘width‘:‘300px‘, ‘height‘:‘200px‘, ‘fontSize‘:‘50px‘, ‘opacity‘:0.5 }); });
注意:一个 CSS 变化就是一个动画效果,上面的例子中,已经有四个 CSS 变化,已经 实现了多重动画同步运动的效果。 必传的参数只有一个,就是一个键值对 CSS 变化样式的对象。还有两个可选参数分别 为速度和回调函数。
$(‘.animate‘).click(function(){ $(‘#box‘).animate({ ‘width‘:‘300px‘, ‘height‘:‘200px‘ }, 1000, function(){ alert(‘动画执行完毕执行我!‘); }); });
到目前位置,我们都是创建的固定位置不动的动画。如果想要实现运动状态的位移动画, 那就必须使用自定义动画,并且结合 CSS 的绝对定位功能。
$(‘.animate‘).click(function(){ $(‘#box‘).animate({ ‘top‘:‘300px‘, //先必须设置 CSS 绝对定位 ‘left‘:‘200px‘ }); });
自定义动画中,每次开始运动都必须是初始位置或初始状态,而有时我们想通过当前位 置或状态下再进行动画。jQuery 提供了自定义动画的累加、累减功能。
$(‘.animate‘).click(function(){ $(‘#box‘).animate({ ‘left‘:‘+=100px‘, }); });
自定义实现列队动画的方式,有两种:
1.在回调函数中再执行一个动画。
2.通过连缀或 顺序来实现列队动画。
//通过依次顺序实现列队动画$(‘.animate‘).click(function(){ $(‘#box‘).animate({‘left‘:‘100px‘}); $(‘#box‘).animate({‘top‘:‘100px‘}); $(‘#box‘).animate({‘width‘:‘300px‘}); });
注意:如果不是同一个元素,就会实现同步动画
//通过连缀实现列队动画 $(‘.animate‘).click(function(){ $(‘#box‘).animate({ ‘left‘:‘100px‘ }).animate({ ‘top‘:‘100px‘ }).animate({ ‘width‘:‘300px‘ }); }); //通过回调函数实现列队动画 $(‘.animate‘).click(function(){ $(‘#box‘).animate({ ‘left‘:‘100px‘ }, function(){ $(‘#box‘).animate({ ‘top‘:‘100px‘ }, function(){ $(‘#box‘).animate({ ‘width‘:‘300px‘ }); }); }); });
jQuery 动画效果