五、jQuery中的动画

通过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()方法可以把元素的不透明度以渐进方式调整到指定的值,这个动画只调整元素的不透明度,即匹配的元素的高度和宽度不会发生变化。

时间: 2024-10-10 02:59:49

五、jQuery中的动画的相关文章

第五章 jQuery中的动画

http://www.cnblogs.com/shuibing/p/4080543.html 通过jQuery中的动画方法,能轻松地为网页添加精彩的视觉效果,给用户一种全新体验. 1.show()方法和hide()方法 该方法的功能与css()方法设置display属性效果相同. 给show()方法和hide()方法设置参数能有动画效果.例如 show(600);来设置时长600毫秒,同时改变元素的高度,宽度和不透明度. <!DOCTYPE html PUBLIC "-//W3C//DTD

前端编程提高之旅(十六)————jquery中的动画

    上一篇文章对jquery中的事件做了总结,这篇文章主要对jquery中的动画做一下总结归类.最近微信端分享中,有很多页面交互及动画做的非常受欢迎,非常符合移动端体验.看似花哨的动画从本质上都脱离不了编写动画的基本方法.乐帝将jquery动画部分内容,做了一个简单的归类.     如下图:     如上图所示,无论多复杂的动画,从实现上都采用这些最底层的动画方法.本篇将从动画方法和与动画状态有关的方法讲起.    一.动画方法    1.同时改变高.宽.不透明度方法    这里涉及show

【学习笔记】jQuery中的动画与效果

1.基本效果 匹配元素从左上角开始变浓变大或缩小到左上角变淡变小 ①隐藏元素 除了可以设置匹配元素的display:none外,可以用以下函数 hide(speed,[callback])  返回值:jQuery  参数-speed:三种预订速度之一的字符串String(slow,normal,fast)或表示动画时长的毫秒数Number  callback:在完成动画时执行的函数,每个匹配元素执行一次 slow=600毫秒  normal=400毫秒  fast=200毫秒 以优雅的动画隐藏所

jQuery中停止动画stop

jQuery中停止动画stop 动画在执行过程中是允许被暂停的,当一个元素调用.stop()方法,当前正在运行的动画(如果有的话)立即停止 语法: .stop( [clearQueue ], [ jumpToEnd ] ) .stop( [queue ], [ clearQueue ] ,[ jumpToEnd ] ) stop还有几个可选的参数,简单来说可以这3种情况 .stop(); 停止当前动画,点击在暂停处继续开始 .stop(true); 如果同一元素调用多个动画方法,尚未被执行的动画

jQuery中animate动画第二次点击事件没反应

jQuery中animate动画第二次点击事件没反应 用animate做点击翻页动画时发现第二次点击事件动画没反应,而第一次点击有动画效果,代码如下: 复制代码 代码如下: $(".page").stop().animate({top:“-300px”}, 800, 'easeInOutExpo'); 第二次点击事件动画没反应的原因:top是page元素顶部相与其父元素顶部的距离,第一次点击后,page元素顶部已经移动到距其父元素顶部 -300px的位置,第二次点击时的并不是page在

JQuery中的动画效果

JQUERY DAY03: * 动画效果 * 显示与隐藏 * show() - 显示 * 无参版本 - 不具有动画效果 * show(speed,callback)有参版本 - 具有动画效果 * speed - 设置动画执行的时长,单位为毫秒 * 三个预定义值 - slow|normal|fast * callback - 当动画执行完毕后执行的函数 * hide() - 隐藏 * 无参版本 - 不具有动画效果 * hide(speed,callback)有参版本 - 具有动画效果 * spee

jQuery学习笔记(三)jQuery中的动画

1 show() 方法和hide() 方法  (显示和隐藏) show() 方法和hide() 方法是jQuery中基本的动画方法.在HTML文档里,为一个元素调用hide() 方法,会将该元素的display样式改为“none”. $("element").hide(); //通过hide()方法将element元素隐藏 $("element").css("display","none"); //通过css()方法将elem

jquery学习(六)-jquery中的动画

参考锋利的jQuery第二版 1.show和hide方法 调用方法:element.hide()隐藏元素,element.show()显示元素.其实说白了,其原理就是将元素的样式display值设置为none或block. 若想让元素慢慢隐藏或显示,可以为其添加一个速度的参数,如element.show(500),表示元素会在500毫秒内慢慢显示出来. 2.fadeIn和fadeOut方法 fadeIn和fadeOut分别是实现元素淡入和淡出的方法.其原理是通过一段时间内改变元素的不透明度(op

jquery中的动画

自带动画函数 show()方法和hide()方法 调用show()函数会将该元素的display属性设置为none,将元素隐藏 调用hide()函数会将该元素的display样式设置为原来的值,将元素又一次显示 Tip: 使用该方法时,元素的宽度/高度/透明度是同一时候变化的. 能够给该方法传递參数"fast","normal","slow",或着之间填数字(单位是毫秒)控制元素消失/出现的速度. 演示样例程序: <html> <