05-老马jQuery教程-动画

前言

jQuery的动画系统做的非常出色,而且把最常用的显示、隐藏、淡入淡出、滑动显示和折叠凳效果都做了很好的封装。跟jQuery的选择器和事件配合起来,可以实现很多很绚的效果,而且简单易用兼容性好。

1. 显示动画

jQuery的原型上的方法 show()方法可以实现让DOM元素进行显示动画。

  • 语法: show([speed,[easing],[fn]])

  • 参数

    • speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000)
    • fn:在动画完成时执行的函数,每个元素执行一次。
    • easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear".可以可以进行扩展,比如参考文章:地址
  • 返回值: jQuery包装对象。

  • 示例

// 显示所有段落
// <p style="display: none">Hello</p>
$("p").show()

// 用缓慢的动画将隐藏的段落显示出来,历时600毫秒。
// <p style="display: none">Hello</p>
$("p").show("slow");

// 用迅速的动画将隐藏的段落显示出来,历时200毫秒。并在之后执行反馈!
// <p style="display: none">Hello</p>
$("p").show("fast",function(){
   $(this).text("Animation Done!");
 });

// 将隐藏的段落用将近4秒的时间显示出来。。。并在之后执行一个反馈。。。
// <p style="display: none">Hello</p>
$("p").show(4000,function(){
   $(this).text("Animation Done...");
 });

2. 隐藏动画

语法: hide([speed,[easing],[fn]])

隐藏动画的参数和使用跟show表现一致。在此就不赘述。

$("p").hide()
// 用600毫秒的时间将段落缓慢的隐藏
$("p").hide("slow");
// 用200毫秒将段落迅速隐藏,之后弹出一个对话框。
$("p").hide("fast",function(){
   alert("Animation Done.");
 });

3. 下滑显示(slideDown)

语法:slideUp([speed,[easing],[fn]])

通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。这个动画效果只调整元素的高度,可以使匹配的元素以“滑动”的方式隐藏起来。在jQuery 1.3中,上下的padding和margin也会有动画,效果更流畅。

参数跟show保持一致,不再赘述。

// 用600毫秒缓慢的将段落滑上
$("p").slideUp("slow");
// 用200毫秒快速将段落滑上,之后弹出一个对话框
$("p").slideUp("fast",function(){
   alert("Animation Done.");
 });

4. 折叠隐藏效果(slideUp)

语法: slideUp([speed,[easing],[fn]])

通过高度变化(向上减小)来动态地隐藏所有匹配的元素,在隐藏完成后可选地触发一个回调函数。

跟slideDown的语法保持一致。参数等不再赘述。

$("p").slideUp("slow");
// 用200毫秒快速将段落滑上,之后弹出一个对话框
$("p").slideUp("fast",function(){
   alert("Animation Done.");
 });

5. 折叠和下拉效果切换方法(toggleSlide)

语法:slideToggle([speed],[easing],[fn])

用法跟slideUp和slideDown保持一致。如果元素已经滑上去了,那么执行此方法就会滑下来。

6. 淡入、淡出效果

由于淡入淡出的方法跟slide系列的方法保持一致。不赘述。

语法 功能 实例
fadeIn([speed],[easing],[fn]) 淡入效果 $("p").fadeIn("slow");
fadeOut([speed],[easing],[fn]) 淡出效果 $("p").fadeOut("fast");
fadeToggle([speed],[easing],[fn]) 切换淡入淡出 $("p").fadeToggle("slow");

7、设置元素透明度动画

  • 语法:fadeTo([[speed],opacity,[easing],[fn]])

  • 概述

把所有匹配元素的不透明度以渐进方式调整到指定的不透明度,并在动画完成后可选地触发一个回调函数。这个动画只调整元素的不透明度,也就是说所有匹配的元素的高度和宽度不会发生变化。

  • 参数

    • speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000)
    • opacity:一个0至1之间表示透明度的数字。0完全透明,1完全不透明。
    • easing:(Optional) 用来指定切换效果,默认是"swing",可用参数"linear"
    • fn:在动画完成时执行的函数,每个元素执行一次。
  • 示例

// 使用淡入效果来显示一个隐藏的 <p> 元素:
$(".btn2").click(function(){
  $("p").fadeIn();
});
// 用600毫秒缓慢的将段落的透明度调整到0.66,大约2/3的可见度
$("p").fadeTo("slow", 0.66);
// 用200毫秒快速将段落的透明度调整到0.25,大约1/4的可见度,之后弹出一个对话框
$("p").fadeTo("fast", 0.25, function(){
   alert("Animation Done.");
 });

8. 自定义动画

jQuery封装了对css中数值属性的动画效果的封装,可以让开发人员对数值类的属性进行自定义的动画。

  • 语法 animate(params,[speed],[easing],[fn])

  • 参数

    • params:一组包含作为动画属性和终值的样式属性和及其值的集合
    • speed:三种预定速度之一的字符串("slow","normal", or "fast")或表示动画时长的毫秒数值(如:1000)
    • easing:要使用的擦除效果的名称(需要插件支持).默认jQuery提供"linear" 和 "swing".
    • fn:在动画完成时执行的函数,每个元素执行一次。
  • 示例

// 在一个动画中同时应用三种类型的效果
$("#go").click(function(){
  $("#block").animate({ 
    width: "90%",
    height: "100%", 
    fontSize: "10em", 
    borderWidth: 10
  }, 1000 );
});

// 让指定元素左右移动
// HTML 代码:
// <button id="left">«</button> <button id="right">»</button>
// <div class="block"></div>
// jQuery 代码:
$("#right").click(function(){
  $(".block").animate({left: '+=50px'}, "slow");
});

$("#left").click(function(){
  $(".block").animate({left: '-=50px'}, "slow");
});

// 在600毫秒内
$("p").animate({
   height: '300px', opacity: '0.2'
 }, "slow");

滚动到顶部案例

    $('#btnScrollTop').on('click', function(e) {
        $('html,body').animate({
          scrollTop: 0
        }, 1000);
      });

9. 停止动画

语法:stop([queue],[clearQueue],[jumpToEnd])

停止所有在指定元素上正在运行的动画。如果队列中有等待执行的动画(并且clearQueue没有设为true),他们将被马上执行

参数:

  • clearQueue:如果设置成true,则清空队列。可以立即结束动画。

  • jumpToEnd:让当前正在执行的动画立即完成,并且重设show和hide的原始样式,调用回调函数等。

  • queue:用来停止动画的队列名称(v1.7+ 以后版本才添加)

  • 示例

// 停止当前正在运行的动画:
$("#stop").click(function(){
  $("#box").stop();
  // 立即结束当前动画,并清空队列。
  $("#box").stop(true, true);
});
// 点击Go之后开始动画,点Stop之后会在当前位置停下来
// <button id="go">Go</button> <button id="stop">STOP!</button>
// <div class="block"></div><button id="go">Go</button> <button id="stop">STOP!</button>
// <div class="block"></div>
// 开始动画
$("#go").click(function(){
  $(".block").animate({left: '+200px'}, 5000);
});

// 当点击按钮后停止动画
$("#stop").click(function(){
  $(".block").stop();
});

10. 结束动画

  • 语法:finish( [queue ] )

  • 概述

停止当前正在运行的动画,删除所有排队的动画,并完成匹配元素所有的动画。当.finish()在一个元素上被调用,立即停止当前正在运行的动画和所有排队的动画(如果有的话),并且他们的CSS属性设置为它们的目标值(所有动画的目标值)。所有排队的动画将被删除。如果第一个参数提供,该字符串表示的队列中的动画将被停止。

.finish()方法和.stop(true, true)很相似,.stop(true, true)将清除队列,并且目前的动画跳转到其最终值。但是,不同的是,.finish() 会导致所有排队的动画的CSS属性跳转到他们的最终值。

  • 参数queue:String类型,停止动画队列中的名称。

  • 示例

// 停止当前正在运行的动画
$("#complete").click(function(){
  $("div").finish();
});

上课代码

<input type="button" value="动画" id="btn">
  <input type="button" value="立即结束动画" id="btnFinish">
  <input type="button" value="停止动画" id="btnStop">
  <div class="box">
  </div>
  <script>
    $(function() {
      $('#btn').on('click', function(e) {
        $('.box').hide(1000)
        .show(1000)
        .slideUp(1000)
        .slideDown(1000)
        .fadeTo(1000, 0.5)
        .animate({width: 200}, 1000);
      });

      $('#btnFinish').on('click', function(e) {
        // 立即结束动画,让dom元素变化到最终动画队列都结束效果状态。
        $('.box').finish();
      });

      $('#btnStop').on('click', function(e) {
        // stop方法传入一个参数:false或者不传参数,表示结束当前的动画。后续的动画不受影响
        // $('.box').stop(false);
        // 如果传入第一个参数为true,后续的动画也都受影响。不执行了。
        // $('.box').stop(true);

        // 让dom元素动画结束,然后让dom元素到当前动画结果的状态。
        $('.box').stop(true, true);
      });
    });
  </script>

11. 延迟执行

  • 语法:delay(duration,[queueName])

  • 概述

设置一个延时来推迟执行队列中之后的项目。用于将队列中的函数延时执行。他既可以推迟动画队列的执行,也可以用于自定义队列。

  • 参数

    • duration:延时时间,单位:毫秒
    • queueName:队列名词,默认是Fx,动画队列。
  • 示例

// 在.slideUp() 和 .fadeIn()之间延时800毫秒。
// <div id="foo /">
$('#foo').slideUp(300).delay(800).fadeIn(400);

12. jQuery动画属性设置

  • 关闭页面上所有的动画

    jQuery.fx.off 把这个属性设置为true可以立即关闭所有动画(所有效果会立即执行完毕)

  • 设置动画的显示帧速

    jQuery.fx.interval = 100;


对应视频地址:http://qtxh.ke.qq.com
老马qq: 515154084
老马微信:请扫码

微信:Flydragon_malun
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 题目1: jQuery 能做什么? 选择网页元素改变结果集元素的操作:取值和赋值元素的操作:移动元素的操作:复制、...
    QQQQQCY阅读 183评论 0 1
  • jQuery jQuery就是JS的一个扩展库,工具库,提供很多方便快捷的方法,所以将JS对象转换为jQuery对...
    YQY_苑阅读 225评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,145评论 0 1
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,316评论 0 2
  • 昨晚,嘎娃在做题,嘎娘在一边码字。 在老家的嘎爹已经从嘎娘的文字中,嗅到了嘎娘的怨气。 于是,还没回家就不停的给嘎...
    a宫雨阅读 363评论 0 3