一、基本动画

1、show()方法和hide()方法:改变display属性

为一个元素调用hide()方法,会将该元素的display样式改为“display:none”。

$(“element”).hide()       //通过hide元素隐藏元素

$(“element”).css(“display: none”)        //通过css()方法隐藏元素

以上两种隐藏元素的方法效果一致

在元素调用了hide()方法后,可以为该元素调用show()方法将元素的display样式设置为hide()方法调用之前的显示状态(“block”或”hide”或其他除了“none”之外的值)

$(“element”).show( )

注意在hide()方法将元素隐藏之前,会记住原先的display属性值,当调用show()方法时,就会根据hide()方法记住的display属性值来显示元素。

2、fadeIn()方法和fadeOut()方法:改变元素的不透明度

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

3、slideUp()方法和slideDown()方法:改变元素的高度

slideUp()方法和slideDown()方法只会改变元素的高度。当元素的display属性值为“none”,当调用slideDown()方法时,元素将由上至下延伸显示。slideUp()方法则相反,元素将由下到上缩短隐藏。

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

show()和hide()方法在不带任何参数情况下,相当于css(“display”,“none/block/inline”),作用是立即隐藏或显示匹配的元素,不会有任何动画。

为show()和hide()方法指定一个速度参数就可以让元素以该速度显示/隐藏。

参数选择:

①可以使用关键字:“slow”(600ms)或“normal”(400ms)或“fast”(200ms)

$(“element”).hide(“slow”)             //让元素以“slow”600ms的速度慢慢地隐藏起来

$(“element”).show(“fast”)             //让元素以“fast”200ms的速度显示出来

②使用数字,单位是毫秒ms

$(“element”).hide(1000)                  //让元素以1000ms的速度隐藏起来

5、jQuery中的任何动画效果,都可以指定3种速度参数,即“slow”、“normal”和“fast”(时间长度分别是0.6s、0.4s和0.2s)。当使用速度关键字时要加入引号,如show(“slow”)。如果用数字作为时间参数时就不需要加入引号,如hide(1000)。

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

语法结构:

animate(params,speed,callback)

参数说明:

①params:一个包含样式属性及值的映射,比如{property1:“value1”,protery2:“value2”,……}

②speed:速度参数,可选

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

1、自定义简单动画

例如,为id为“panel”的元素创建一个单击事件,然后对元素加入animate()方法,使元素在2s内向右移动500px:

$(function(){

$(“#panel”).click(function(){

$(this).animate({left:”500px”},2000};

});

});

2、累加、累减动画

在之前的代码中,设置了{left:“500px”}作为动画参数。如果在500px之前加上“+=”或者“-=”符号即表示在当前位置累加或者累减。

例如:

$(function(){

$(“#panel”).click(function(){

$(this).animate({left:"+=500px”},3000);   //在当前位置累加500px

});

});

3、多重动画

①同时执行多个动画

例如:

$(function(){

$(“#panel”).click(function(){

$(this).animate({left:”500px”,”height:”200px”},2000);    //向右移动和高度变为200是同时进行的

});

});

②按顺序执行多个动画

例如:

$(function(){

$(this).animate({left:”500px”},2000);

$(this).animate({height:”200px”},2000);

});

也可以改为链式写法

例如:

$(function(){

$(this).animate({left:”500px”},2000)

.animate({height:”200px”},2000);

});

4、综合动画

例如:

$(function(){

$(“#panel”).css(“opacity”,”0.7”);

$(“#panel”).click(function(){

$(this).animate({left:”500px”,height:”200px”,opacity:”1”},2000)

.animate({top:”200px”,width:”200px”},2000).

.fadeOut(“normal”);

});

});

5、动画回调函数

以上代码,预期结果是在动画最后一步改变border样式:

$(function(){

$(“#panel”).css(“opacity”,”0.7”);

$(“#panel”).click(function(){

$(this).animate({left:”500px”,height:”200px”,opacity:”1”},2000)

.animate({top:”200px”,width:”200px”},2000).

.css(“border”,”5px solid #000”);

});

});

然而,这并不能得到预期的结果,实际结果是刚开始执行动画的时候,css()方法就被执行了。

原因:css()方法并不会加入动画队列中,而是立即执行。

解决方案:使用回调函数(callback)对非动画方法实现排队

例如:

$(function(){

$(“#panel”).css(“opacity”,”0.7”);

$(“#panel”).click(function(){

$(this).animate({left:”500px”,height:”200px”,opacity:”1”},2000)

.animate({top:”200px”,width:”200px”},2000,function(){

$(this).css(“border”,”5px solid #000”);

});

});

注意:callback函数适用于所有jQuery动画效果方法

例如:

$(“#element”).slideDown(200,function(){

//在效果完成后做其他事情

});

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

①停止元素的动画

使用stop()方法来停止动画

语法结构:stop([clearQueue].[gotoEnd]);

两个参数都是可选,为Boolean值(true或false)。

clearQueue代表是否要清空未执行完的动画队列,toToEnd代表是否直接将正在执行的动画跳转到末状态。直接使用stop()方法,则会立即停止当前正在进行的动画,如果接下来还有动画等待继续进行,则以当前状态开始接下来的动画。

问题:当为一个元素绑定hover事件之后,用户把光标移入元素时会触发动画效果,而当这个动画还没结束时,用户就将光标移出这个元素,那么光标移出的动画效果将会被放进队列中,等待光标移入的动画结束后再执行。因此如果光标移入移出过快就会导致动画效果与光标的动作不一致。

解决方法:在光标移入、移出动画之前加入stop()方法。stop()方法会结束当前正在进行的动画,并立即执行队列中的一个动画。

例如:

$(“#panel”).hover(function(){

$(this).stop()

.animate({height:”150”,width:”300”},200);

}.function(){

$(this).stop()

.animate({height:”22”,width:”60”},300);

});

如果遇到组合动画,例如:

$(“#panel”).hover(function(){

$(this).stop()

.animate({height:”500px”},200)            //如果在此时触发了光标移出的事件,将执行下面的动画

.animate({width:”200px”},300);           //而不是光标移出事件中的动画

}.function(){

$(this).stop()

.animate({height:”22”},200)

.animate({width:”100px”},300);

});

问题:此时如果动画正执行在第一个阶段(改变height阶段)触发光标移出事件后,只会停止当前的动画,并继续进行下面的animate({width:”200px”},300); 动画,而光标移出事件中的动画要等这个动画结束后才会继续执行

解决方法:把stop()方法的第一个参数(clearQueue)设置为true,此时程序会把当前元素接下来尚未执行的动画队列清空。

更改后的代码:

$(“#panel”).hover(function(){

$(this).stop(true)

.animate({height:”500px”},200)            //如果在此时触发了光标移出的事件,将执行下面的动画

.animate({width:”200px”},300);           //而不是光标移出事件中的动画

}.function(){

$(this).stop()

.animate({height:”22”},200)

.animate({width:”100px”},300);

});

第2个参数(gotoEnd)可以用于让正在执行的动画直接到达结束时刻的状态,通常用于后一个动画需要基于前一个动画的末状态的情况,可以通过stop(false,true)这种方式来让当前动画直接到达末状态。

stop(true,true):则停止当前动画并直接到达当前动画的末状态,并清空动画队列。

注意:jQuery只能设置正在执行的动画最终状态,而没有提供直接到达未执行动画队列最终状态的方法。

②判断元素是否处于动画状态

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

③延迟动画

delay方法允许我们将队列中的函数延时执行。它既可以推迟队列中函数的执行,也可以用于自定义队列。

例如:

$(this).animate({left:”400px”,height:”200px”,opacity:”1”},3000)

.delay(1000)

.animate({top:”200px”,width:”200px”},3000)

.delay(2000)

.fadeOut(“slow”);

三、其他动画方法

另外4个专门用于交互的动画方法:

①toggle(speed,[callback])

②slideToggle(speed,[easing],[callback])

③fadeTo(speed,opacity,[callback])

④fadeToggle(speed,[easing],[callback])

1、toggle()方法:toggle方法可以切换元素的可见状态。如果元素是可见的,则切换为隐藏的;如果元素是隐藏的,则切换为可见。

例如:

$(“#panel”).toggle(function(){

$(this).next().toggle();

});

相当于jQuery代码:

$(“#panel”).click(function(){

$(this).next().hide();

}.function(){

$(this).next().show();

}):

2、slideToggle()方法:通过高度变化来切换匹配元素的可见性。

例如:

$(“#panel”).slideToggle(function(){

$(this).next().slideToggle();

});

相当于jQuery代码:

$(“#panel”).click(function(){

$(this).next().slideDown();

}.function(){

$(this).next().slideUp();

}):

3、fadeTo()方法:可以把元素的不透明度以渐进方式调整到指定的值。

例如:

$(“#panel”).fadeTo(function(){

$(this).next().fadeTo(600,0.2);

});

当链接被单击后,“内容”会以600s的速度调整到指定的不透明度0.2

4、fadeToggle()方法:通过不透明度变化来切换匹配元素的可见性。只调整元素的不透明度

$(“#panel”).fadeToggle(function(){

$(this).next().fadeToggle();

});

相当于jQuery代码:

$(“#panel”).click(function(){

$(this).next().fadeToggle();

}.function(){

$(this).next().fadeToggle();

}):

四、动画方法概括

1、改变样式属性

方法名

说明

hide()和show() 同时修改多个样式属性即高度、宽度和不透明度
fadeIn()和fadeOut() 只改变不透明度
slideUp()和slideDown() 只改变高度
fadeTo() 只改变不透明度
toggle() 用来代替hide()方法和show()方法,所以会同时修改多个样式属性即高度、宽度和不透明度
slideToggle() 用来代替slideUp()方法和slideDown()方法,所以只能改变高度
fadeToggle() 用来代替slideIn()方法和fadeOut()方法,所以只能改变不透明度
animate() 属于自定义动画的方法,以上各种动画实质内部都调用了animate()方法。

特别注意animate()方法,可以使用它来替代其他所有的动画方法。

2、动画队列

(1)一组元素上的动画效果

①当在一个animate()方法中应用多个属性时,动画是同时发生的。

②当以链式的写法应用动画方法时,动画是按照顺序发生的(除法queue选项值是false)

(2)多组元素上的动画效果

①默认情况下,动画都是同时发生的

②当以回调的形式应用动画方式时(包括动画的回调函数和queue()方法的回调函数),动画是按照回调顺序发生的。

转载于:https://www.cnblogs.com/dodomonster/p/5252996.html

jQuery中的动画相关推荐

  1. jQuery中的动画理论干货

    [jQuery中的动画] 通过jQuery动画能够轻松地为页面添加精彩的视觉效果 [show()方法和hide()方法] 1.show()方法和hide()方法是jQUERY中最基本的动画方法,相当于 ...

  2. JQuery中的动画效果

    show() hide() slideUp slideDown fadeIn fadeOut animate : 自定义动画 JQuery中的动画效果.html <!DOCTYPE html&g ...

  3. 玩转Jquery中的动画效果(animate方法)

    jQuery 动画 - animate() 方法 jQuery animate() 方法用于创建自定义动画. 语法: $(selector).animate({params},speed,callba ...

  4. jQuery 中的动画特效

    jQuery 吸引我的就是他的动画机制,可能也吸引了无数后台开发和前台开发人员,下面我们一起来看看: 1.show() 和 hide() 方法 show() 和 hide() 方法是 jQuery 中 ...

  5. Jquery中关于动画的一些操作函数

    首先是介绍函数: 第一个函数是: slideDown()是用于向下滑动元素.完整的函数是这样的slideDown(speed,callback); speed是规定效果的时长. callback是滑动 ...

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

    参考锋利的jQuery第二版 1.show和hide方法 调用方法:element.hide()隐藏元素,element.show()显示元素.其实说白了,其原理就是将元素的样式display值设置为 ...

  7. jQuery中的动画 -- 案例

    视频展示效果 HTML代码: <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  8. jquery中自定义动画效果实现

    1. 语法: $(selector).animate({params},[speed,callback]);必需的 params 参数定义形成动画的 CSS 属性.可选的 speed 参数规定效果的时 ...

  9. jquery中动画效果的函数

    在jquery中有很多的动画效果,我给大家分享了一下jquery中的动画函数 jQuery的效果函数列表: animate():对被选元素应用"自定义"的动画. clearQueu ...

最新文章

  1. 【c语言】输入一个4位数,求四位数中各位数相加之和
  2. keil git 编译文件_keil下的STM32程序开发部署(一)
  3. Java中有关Null的9件事
  4. boost之asio同步io使用实例
  5. java中商业数据计算时用到的类BigDecimal和DecimalFormat
  6. static关键字_聊聊static关键字
  7. centos7 下修改网络配置
  8. 变体类型Variant
  9. java子类访问父类私有成员_Java中子类可以继承父类的私有成员,但是不能(直接)访问!!!...
  10. 爱思助手短信备份到安卓_爱思助手 Bug 修复,完美降级10.3.3
  11. 怎么得到hid设备名_上海海关旧设备进口清关公司这个不错
  12. 详解回调函数(同步回调,异步回调)
  13. 基于京东家电商品知识图谱的自动问答系统(三) -- Java实现问答系统
  14. 计算机应用程序无响应,电脑上应用程序很容易未响应,怎么办?
  15. html中创建学生对象,在考生文件夹下,存在一个数据库文件“sampl.mdb”。在数据库文件中已经建立了一个表对象“学生基本情_搜题易...
  16. 王半仙儿的日记-0002
  17. app 隐私 自我评估指南_监督和改善公司隐私和安全计划的一般法律顾问指南
  18. CANDENCE :如何新建PCB文件、设置PCB画布尺寸、绘制PCB板框
  19. Swift 闭包(block)详解
  20. Java微信公众平台开发(十二)--微信JSSDK的使用

热门文章

  1. springMvc的执行流程(源码分析)
  2. [转] 前后端分离之JWT用户认证
  3. C#方法中参数ref和out的解析
  4. 【转】Unity游戏开发图片纹理压缩方案
  5. 用SAXBuilder、Document、Element操作xml
  6. 时间复杂度和空间复杂度3 - 数据结构和算法05
  7. 对象引用与托管指针(object references and managed pointers)
  8. 安装华为T2000软件,无法初始化MS SQL 2000问题解决办法
  9. 公钥私钥 多久过期_上传到公钥服务器的gpg公钥过期了会被删除吗?
  10. linux 查看java进程_Linux进程查看及管理工具(ps, vmstat, dstat, glances等)