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

五、jQuery中的动画

时间:2015-11-17 11:10:34      阅读:290      评论:0      收藏:0      [点我收藏+]

标签:

通过jQuery的动画方法,能够轻松地为网页添加非常精彩的视觉效果,给用户一种全新的体验。

一、show()方法和hide()方法

1、show()方法和hide()方法

show()方法和hide()方法是jQuery中最基本的动画方法。在HTML文档里,为一个元素调用hide()方法,会将该元素的display样式改为none。

隐藏元素:

$("element").hide();  //通过hide()方法隐藏元素

  也可以通过css方法设置display属性

$("element").css("display","none");//通过css()方法隐藏元素

当吧元素隐藏后,可以使用show()方法将元素的dislay样式设置为先前的显示状态。

$("element").show();

用jQuery做动画效果要求要在标准模式下,否则可能会引起动画抖动。

2、show()方法和hide()方法让元素动起来

show()方法和hide()方法在不带任何参数的情况下,相当于css("display","none/block/inline")。作用是立即隐藏或显示匹配的元素,不会有任何动画。如果希望在调用show()方法时,元素慢慢的显示出来,可以为show()方法指定一个速度参数,例如,指定一个速度关键字"slow"。

$("element").show("slow");

其他关键字还有:normal  fast。还可以为显示速度指定一个数字。

$("element").hide(600);

hide(600)方法会同时减少内容的高度、宽度和不透明度,直至这3个属性的值都为0,最后设置该元素的css规则为display:none.同理,show(600)方法则会从上到下增大内容的高度,从左到右增大内容的宽度,同时增加内容的不透明度,直至元素全部显示出来。

二、fadeIn()方法和fadeOut()方法

与show()方法不相同的是,fadeIn()方法和fadeOut()方法只改变元素的不透明度。fadeOut()方法会在指定的一段时间内降低元素的不透明度,直到元素完全消失(display:none)。fadeIn()方法则相反。

三、slideUp()方法和slidDown()方法

slideUp()方法和slideDown()方法只会改变元素的高低,当调用slideDown()方法时,这个元素将由上至下延伸显示。slideUp()方法正好相反,元素将由下到上缩短隐藏。

四、自定义动画animate()方法

前面已经讲了3种类型的动画。其中show()方法和hide()方法会同时修改元素的多个样式属性,高度、宽度、透明度。fadeOut()、fadeIn()方法只会修改元素的不透明度。slideDown()方法和slideUp()方法只会改变元素的高度。很多情况,这些方法无法满足用户的各种需求,那么就需要对动画有更多的控制,需要采取一些高级的自定义动画来解决这些问题。在jQuety中,可以使用animate()方法来自定义动画。animate(params,speed,callback)。

第一个参数:params 一个包含样式属性及值的映射,比如:{property1:"value1",property2:"value2",....}

第二个参数:speed 速度参数 可选。

callback:在动画完成时执行的函数,可选。

1、自定义简单动画

单击div区域,使得div向左移动:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="../js/jquery-1.7.2.min.js"></script>
<style type="text/css">
 #panel{position:relative; width:100px; height:100px; border:1px solid #0050D0; background:#96E555; cursor:pointer;}
</style>
<script type="text/javascript" >
 $(function(){
  $("#panel").click(function(){
   $(this).animate({left:"500px"},3000);
   });
  });
</script>
</head>
<body>
<div id="panel"></div>
</body>
</html>

2、累加累减动画

{left:"500px"}中的500px之前加上“+=”或“-=”符号表示在当前位置累加或者累减。

 $(function(){
  $("#panel").click(function(){
   $("#panel").animate({left:"+=500px"},3000);
   });
  });

 3、多重动画

 (1)、同时执行多个动画

例如在元素向右滑动的同时,放大元素的高度。

$(function(){
  $("#panel").click(function(){
   $(this).animate({left:"500px",height:"200px"},3000);
   });
  });

 (2)、按顺序执行多个动画

上例中,两个动画(left:"500px"和height:"200px")是同时发生的,如果想要按顺序执行动画,例如让<div>元素先向右滑动,然后在放大它的高度,只需把代码拆开,然后按照顺序写就可以了。

$(function(){
  $("#panel").click(function(){
   $(this).animate({left:"500px"},3000);
   $(this).animate({height:"200px"},3000);
   });
  });

 因为animate()方法都是对同一个jQuery对象进行操作,所以也可以改为链式的写法。

4、综合动画

例如,单击<div>元素后让他向右移动的同时增大它的高度,并将它的不透明度从50%变换到100%,然后在让他从上到下移动,同时他的宽度变大,当完成这些效果后,让他以淡出的方式隐藏。

 $(function(){
   $("#panel").click(function(){
    $("#panel").animate({left:"400px",height:"200px",opacity:"1"},3000).animate({top:"200px",width:"200px"},3000).fadeOut("slow");
    });
  });

 5、动画回调函数

如果将上例的fadeOut("slow")改为css("border","5px solid blue"),实际的效果是,刚开始执行动画的时候,css()方法就执行了。出现这个问题的原因是css()方法并不会加入到动画队列中,而是立即执行。可以使用回调函数callback对非动画方法实现排队。只要把css()方法写在最后一个动画的回调函数里即可。

回调函数callback适用于所有的jQuery的动画的效果方法,例如slideDown()方法。

6、停止动画和判断是否处于动画状态

(1)、停止动画:

很多时候需要停止匹配元素正在进行的动画,如果需要在某处停止动画,需要使用stop()方法。stop([clearQueue],[gotoEnd])

参数clearQueue,gotoEnd都是可选的参数,为boolean值。clearQueue代表是否要清空未执行完的动画列表,gotoEnd代表是否直接将正在执行的动画跳转到末状态。如果直接使用stop()方法,则会立即停止当前正在进行的动画,如果接下来还有动画等待继续进行,则以当前状态开始接下来的动画。stop()方法会结束当前正在进行的动画,并立即执行队列中的下一个动画。

(2)、判断元素是否处于动画状态

在使用animate()方法的时候,要避免动画积累而导致的动画与用户的行为不一致。当用户快速在某个元素上执行animate()动画时,就会出现动画积累。解决方法是判断元素是否正处于动画状态,如果元素不处于动画状态,才为元素添加新的动画,否则不添加。

if(!$(element).is(":animated")){}

 7、其他动画方法

除了上面提到的动画方法,jQuery中还有3个专门用于交互的动画方法。

toogle(speed,callback)

slideToggle(speed,callback)

fadeTo(speed,opacity,callback)

(1)、toggle()方法

toggle()方法可以切换元素的可见状态,

(2)、slideToggle()方法

slideToggle()方法通过高度变化来切换匹配元素的可见性。这个动画效果只调整元素的高度

(3)、fadeTo()方法

fadeTo()方法可以把元素的不透明度以渐进方式调整到指定的值,这个动画只调整元素的不透明度,即匹配的元素的高度和宽度不会发生变化。

 

五、jQuery中的动画

标签:

原文地址:http://my.oschina.net/u/2263278/blog/531223

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