Jquery之動(dòng)畫隊(duì)列

進(jìn)入主題之前,先來看一個(gè)例子:

<div class="button">
  <button id="animate">animate</button>
</div>
<div class="box">
  <p>這是box里的內(nèi)容</p>
</div>

<script>
$("#animate").on("click",function(){
  $(".box").animate({
    width: "500px"
  },5000);
  console.log("這是點(diǎn)擊時(shí)出現(xiàn)的文字");
});
</script>

為了效果更明顯跨新,動(dòng)畫的時(shí)間設(shè)置為5s,可以看出控制臺(tái)輸出的文字在點(diǎn)擊按鈕是立即觸發(fā)坏逢,這說明了一個(gè)事情域帐,即動(dòng)畫方法animate不是同步的,而是異步的是整,這就引申出了動(dòng)畫隊(duì)列肖揣。

動(dòng)畫的執(zhí)行不是同步的,而是加入到動(dòng)畫隊(duì)列中浮入,這樣就可以實(shí)現(xiàn)多個(gè)動(dòng)畫效果連在一起龙优,構(gòu)成一個(gè)連續(xù)的動(dòng)畫。

queue( [ queueName ], callback( next ) )

queue()方法用來顯示在匹配的元素上的已經(jīng)執(zhí)行的函數(shù)隊(duì)列

  • queueName:一個(gè)含有隊(duì)列名的字符串事秀。默認(rèn)是fx彤断,標(biāo)準(zhǔn)的動(dòng)畫隊(duì)列
  • callback(next):添加到隊(duì)列的新函數(shù)
<div class="button">
  <button id="animate">animate</button>
</div>
<div class="box">
  <p>這是box里的內(nèi)容</p>
  <p></p>
</div>

<script>
$("#animate").on("click",function(){
  setInterval(function(){
    $(".box p").last().html("當(dāng)前動(dòng)畫隊(duì)列還有" + $(".box").queue().length);
  },1000);
  
  $(".box").animate({
    width: "500px"
  },5000).animate({
    height: "500px"
  },5000);
  
  $(".box").queue(function(){
    $(this).animate({
    width: "50px"
  });
    $(this).css("background","#fff000");
  });
  
  $(".box").animate({
    width: "200px"
  },5000).animate({
    height: "200px"
  },5000);
  console.log("這是點(diǎn)擊時(shí)出現(xiàn)的文字");
});
</script>

如上代碼,queue()方法的返回函數(shù)里animate()沒有執(zhí)行易迹,css()執(zhí)行了宰衙,后面的兩個(gè)animate()也沒有執(zhí)行,這說明了一件事赴蝇,queue()方法雖然可以給動(dòng)畫隊(duì)列添加新的動(dòng)畫菩浙,但是無法自動(dòng)執(zhí)行巢掺,而且會(huì)中斷動(dòng)畫隊(duì)列的執(zhí)行句伶。

dequeue([queueName])

dequeue()方法用來執(zhí)行匹配元素隊(duì)列的下一個(gè)函數(shù)

  • queueName:一個(gè)含有隊(duì)列名的字符串。默認(rèn)是fx陆淀,標(biāo)準(zhǔn)的動(dòng)畫隊(duì)列
$(".box").queue(function(){
    $(this).animate({
    width: "50px"
  });
    $(this).css("background","#fff000");
    $(this).dequeue();
  });

執(zhí)行之后考余,會(huì)發(fā)現(xiàn)queue()方法會(huì)把回調(diào)函數(shù)里新增的動(dòng)畫放在動(dòng)畫隊(duì)列的最后才執(zhí)行

clearQueue([queueName])

clearQueue()方法用于清除動(dòng)畫隊(duì)列中未執(zhí)行的動(dòng)畫轧苫,并不影響當(dāng)前動(dòng)畫效果(即正在進(jìn)行的動(dòng)畫不受影響)楚堤,當(dāng)重新執(zhí)行時(shí),動(dòng)畫隊(duì)列重新開始含懊,但已經(jīng)執(zhí)行過的隊(duì)列身冬,不會(huì)再顯示效果

  • queueName:一個(gè)含有隊(duì)列名的字符串。默認(rèn)是fx岔乔,標(biāo)準(zhǔn)的動(dòng)畫隊(duì)列
<div class="button">
  <button id="animate">animate</button>
  <button id="clearqueue">clearQueue</button>
</div>
<div class="box">
  <p>這是box里的內(nèi)容</p>
  <p></p>
</div>

<script>
$("#animate").on("click",function(){
  setInterval(function(){
    $(".box p").last().html("當(dāng)前動(dòng)畫隊(duì)列還有" + $(".box").queue().length);
  },1000);
  
  $(".box").animate({
    width: "500px"
  },5000).animate({
    height: "500px"
  },5000);
  
  $(".box").queue(function(){
    $(this).animate({
    width: "50px"
  });
    $(this).css("background","#fff000");
  });
  
  $(".box").animate({
    width: "200px"
  },5000).animate({
    height: "200px"
  },5000);
  console.log("這是點(diǎn)擊時(shí)出現(xiàn)的文字");
});

$("#clearqueue").on("click",function(){
  $(".box").clearQueue();
});
</script>

finish()

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

$("#finish").on("click",function(){
  $(".box").finish();
});

stop([clearQueue ] [, jumpToEnd ])

停止當(dāng)前正在運(yùn)行的動(dòng)畫

  • 參數(shù)為空:停止當(dāng)前動(dòng)畫雏门,執(zhí)行動(dòng)畫隊(duì)列中的下一個(gè)動(dòng)畫
  • [clearQueue ]:boolean類型嘿歌,停止當(dāng)前正在進(jìn)行的動(dòng)畫掸掏,清空未執(zhí)行的動(dòng)畫隊(duì)列,影響動(dòng)畫效果
  • [, jumpToEnd ]:boolean類型宙帝,停止當(dāng)前正在進(jìn)行的動(dòng)畫丧凤,清空未執(zhí)行的動(dòng)畫隊(duì)列,并直接跳到本次動(dòng)畫的結(jié)束

具體例子可參考:http://js.jirengu.com/vipeqisike

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末步脓,一起剝皮案震驚了整個(gè)濱河市愿待,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌沪编,老刑警劉巖呼盆,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚁廓,居然都是意外死亡访圃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門相嵌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來腿时,“玉大人,你說我怎么就攤上這事饭宾∨悖” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵看铆,是天一觀的道長(zhǎng)徽鼎。 經(jīng)常有香客問我,道長(zhǎng)弹惦,這世上最難降的妖魔是什么否淤? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮棠隐,結(jié)果婚禮上石抡,老公的妹妹穿的比我還像新娘。我一直安慰自己助泽,他們只是感情好啰扛,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嗡贺,像睡著了一般隐解。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诫睬,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天煞茫,我揣著相機(jī)與錄音,去河邊找鬼岩臣。 笑死溜嗜,一個(gè)胖子當(dāng)著我的面吹牛宵膨,可吹牛的內(nèi)容都是我干的祈纯。 我是一名探鬼主播揉忘,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼假颇,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼居扒!你這毒婦竟也來了颖低?” 一聲冷哼從身側(cè)響起报嵌,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤玻熙,失蹤者是張志新(化名)和其女友劉穎叉庐,沒想到半個(gè)月后裹匙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑞凑,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年概页,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了籽御。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惰匙,死狀恐怖技掏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情项鬼,我是刑警寧澤哑梳,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站绘盟,受9級(jí)特大地震影響鸠真,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜龄毡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一吠卷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稚虎,春花似錦撤嫩、人聲如沸偎捎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽茴她。三九已至寻拂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丈牢,已是汗流浹背祭钉。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留己沛,地道東北人慌核。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓距境,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親垮卓。 傳聞我的和親對(duì)象是個(gè)殘疾皇子垫桂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355