1. 程式人生 > >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;