码迷,mamicode.com
首页 > Web开发 > 详细

jQuery 动画效果

时间:2014-12-13 17:40:40      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   使用   sp   java   on   

在以前很长一段时间里,网页上的各种特效还需要采用 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 动画效果

标签:style   blog   io   ar   color   使用   sp   java   on   

原文地址:http://www.cnblogs.com/Waiting-for-you/p/4161404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!