jQuery動畫隊(duì)列

隊(duì)列

  • 隊(duì)列的本質(zhì)是一個數(shù)組抠刺,對隊(duì)列的理解先從數(shù)組的push和shift開始塔淤。push是從數(shù)組尾端插入新的元素,shift是從數(shù)組首端刪除元素速妖;分別對應(yīng)隊(duì)列中得queue和dequeue高蜂。
  • jquery所有動畫基于animate方法,而animate的動畫默認(rèn)保存在名為fx的動畫隊(duì)列中罕容。
  • queue就是將動畫放進(jìn)隊(duì)列中备恤,dequeue就是將動畫從隊(duì)列中刪除并執(zhí)行它。

jQuery : queue() 方法

queue() 方法顯示或操作在匹配元素上執(zhí)行的函數(shù)隊(duì)列

.queue(queueName,newQueue)

queueName 可選锦秒。字符串值露泊,包含序列的名稱。默認(rèn)是 fx, 標(biāo)準(zhǔn)的效果序列旅择。
每個元素均可擁有一到多個由 jQuery 添加的函數(shù)隊(duì)列惭笑。在大多數(shù)應(yīng)用程序中,只使用一個隊(duì)列(名為 fx)生真。

動畫隊(duì)列

隊(duì)列運(yùn)行在元素上異步地調(diào)用動作序列沉噩,而不會終止程序執(zhí)行。典型例子時(shí)調(diào)用元素上的多個動畫方法柱蟀。例如:

$('#foo').slideUp()
         .fadeIn();

它的執(zhí)行順序是元素先slideUp后再fadeIn川蒙,slideUp和fadeIn有先后順序。jquery會默認(rèn)地將它們放進(jìn)名為fx的隊(duì)列中长已,我們可以這樣認(rèn)為:

var fx = [slideUp, fadeIn];

//相當(dāng)于
$('#foo').queue('fx', fx);

//第一步:出列第一個元素slideUp并執(zhí)行它
$('#foo').dequeue('fx');    //fx = ['inprogress', fadeIn]

//第二步:出列第二個元素fadeIn并執(zhí)行它
$('#foo').dequeue('fx');    //fx = ['inprogress']

//第三步畜眨,隊(duì)列fx為空,動畫執(zhí)行完畢
fx = [];

通過不斷的dequeue术瓮,fx每個元素逐個依次出列執(zhí)行胶果,直至隊(duì)列沒有元素。
也可以這樣理解

$box.hide(1000, function(){
   $box.show(1000, function(){
     $box.fadeOut('slow',function(){
       $box.fadeIn('slow',function(){
         $box.slideUp(function(){
           $box.slideDown(function(){
             console.log('動畫執(zhí)行完畢')
           })
         })
       })
     })
   })
})
//等價(jià)于
$box.hide(1000)
    .show(1000)
    .fadeOut()
    .fadeIn()
    .slideUp()
    .slideDown(function(){
      console.log('真的完畢了')
    })

注意:

  • 當(dāng)通過 .queue() 添加函數(shù)時(shí)斤斧,我們應(yīng)當(dāng)確保最終調(diào)用了 .dequeue()早抠,這樣下一個排隊(duì)的函數(shù)才能執(zhí)行
  • 當(dāng)這樣寫代碼時(shí):
  $('#foo').slideUp().fadeIn().css({'width':'200px'});

它的執(zhí)行順序是元素寬度馬上變成200px的同時(shí),slideUp也在執(zhí)行撬讽,slideUp執(zhí)行完后再執(zhí)行fadeIn

自定義動畫

簡單的動畫不能滿足需求的時(shí)候蕊连,jquery提供了自定義動畫行為的方法

.animate( properties [, duration ] [, easing ] [, complete ] )

properties是一個CSS屬性和值的對象,動畫將根據(jù)這組對象移動悬垃。

$('#btn').click(function() {
  $('#foo').animate({
    opacity: 0.25,
    left: '+=50',
  }, 5000, function() {
    console.log('執(zhí)行完畢')
  });
});

.clearQueue

清除動畫隊(duì)列中未執(zhí)行的動畫

.finish

停止當(dāng)前動畫,并清除動畫隊(duì)列中所有未完成的動畫,最終展示動畫隊(duì)列最后一幀的最終狀態(tài)

.stop( [clearQueue ] [, jumpToEnd ] )

停止當(dāng)前正在運(yùn)行的動畫
clearQueue(default: false)
jumpToEnd(default: false)

    $('#btn6').click(function(){
      //停止當(dāng)前動畫
      $('.box').stop()
    })
    $('#btn7').click(function(){
      //停止當(dāng)前動畫甘苍,并清除未執(zhí)行的動畫隊(duì)列
      $('.box').stop(true, false)
    })
    $('#btn8').click(function(){
      //停止當(dāng)前動畫尝蠕,并清除未執(zhí)行的動畫隊(duì)列,并且當(dāng)前動畫展示最終狀態(tài)
      $('.box').stop(true, true)
    })
    $('#btn9').click(function(){
      //停止當(dāng)前動畫载庭,并清除未執(zhí)行的動畫隊(duì)列看彼,并且當(dāng)前動畫展示最終狀態(tài)
      $('.box').finish()
    })

作者:彭榮輝
鏈接:http://www.reibang.com/u/0f804364a8a8
來源:簡書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)靖榕,非商業(yè)轉(zhuǎn)載請注明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末顽铸,一起剝皮案震驚了整個濱河市茁计,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谓松,老刑警劉巖星压,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鬼譬,居然都是意外死亡娜膘,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門优质,熙熙樓的掌柜王于貴愁眉苦臉地迎上來劲绪,“玉大人,你說我怎么就攤上這事盆赤。” “怎么了歉眷?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵牺六,是天一觀的道長。 經(jīng)常有香客問我汗捡,道長淑际,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任扇住,我火速辦了婚禮春缕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘艘蹋。我一直安慰自己锄贼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布女阀。 她就那樣靜靜地躺著宅荤,像睡著了一般屑迂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上冯键,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天惹盼,我揣著相機(jī)與錄音,去河邊找鬼惫确。 笑死手报,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的改化。 我是一名探鬼主播掩蛤,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼所袁!你這毒婦竟也來了盏档?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤燥爷,失蹤者是張志新(化名)和其女友劉穎蜈亩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體前翎,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稚配,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了港华。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片道川。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖立宜,靈堂內(nèi)的尸體忽然破棺而出冒萄,到底是詐尸還是另有隱情,我是刑警寧澤橙数,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布尊流,位于F島的核電站,受9級特大地震影響灯帮,放射性物質(zhì)發(fā)生泄漏崖技。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一钟哥、第九天 我趴在偏房一處隱蔽的房頂上張望迎献。 院中可真熱鬧,春花似錦腻贰、人聲如沸吁恍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽践盼。三九已至鸦采,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咕幻,已是汗流浹背渔伯。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肄程,地道東北人锣吼。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像蓝厌,于是被迫代替她去往敵國和親玄叠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354