jQuery動畫隊列

動畫隊列

隊列的作用就是讓我們把一個又一個的任務放到一起,確保只有當前面的任務完成了移怯,才會開始下一個任務香璃。這里面的任務可以是同步的,也可以是異步的舟误。

jQuery的動畫系統(tǒng)就是執(zhí)行一個函數(shù)隊列葡秒。對jQuery元素應用fade,slide,animate等動畫,都會默認將函數(shù)壓入一個fx的隊列脐帝。在我們使用jQuery的animate()的時候同云,我們可以在option參數(shù)中傳入一個queue的標志位來決定這個動畫時候壓入當前元素的動畫隊列。如果為false,則不等待當前隊列完成堵腹,而是立即執(zhí)行該動畫炸站。


方法

jQuery提供了以下幾種方法來操作動畫隊列:

queue( [ queueName ], callback( next ) )

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

  • queueName:一個含有隊列名的字符串。默認是fx疚顷,標準的動畫隊列
  • callback(next):添加到隊列的新函數(shù)

dequeue([queueName])

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

  • queueName:一個含有隊列名的字符串旱易。默認是fx,標準的動畫隊列

clearQueue([queueName])

clearQueue()方法用于清除動畫隊列中未執(zhí)行的動畫腿堤,并不影響當前動畫效果(即正在進行的動畫不受影響)阀坏,當重新執(zhí)行時,動畫隊列重新開始笆檀,但已經(jīng)執(zhí)行過的隊列忌堂,不會再顯示效果

  • queueName:一個含有隊列名的字符串。默認是fx酗洒,標準的動畫隊列

finish()

停止當前動畫士修,并清除動畫隊列中所有未完成的動畫,最終展示動畫隊列最后一幀的最終狀態(tài)枷遂。


stop([clearQueue ][, jumpToEnd ])

停止當前正在運行的動畫

  • 參數(shù)為空:停止當前動畫,執(zhí)行動畫隊列中的下一個動畫
  • [clearQueue ]:boolean類型棋嘲,停止當前正在進行的動畫酒唉,清空未執(zhí)行的動畫隊列,影響動畫效果
  • [, jumpToEnd ]:boolean類型沸移,停止當前正在進行的動畫痪伦,清空未執(zhí)行的動畫隊列,并直接跳到本次動畫的結束

示例

下面直接看代碼:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>動畫隊列</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style type="text/css">
        .box {
            background: black;
            padding: 10px;
            width: 150px;
            height: 150px;
            margin-top: 20px;
        }
    </style>
</head>

<body>
    <button id="btn-box1">show</button>
    <button id="btn-box2">hide</button>
    <button id="btn-box3">fadeIn</button>
    <button id="btn-box4">fadeOut</button>
    <button id="btn-box5">slideDown</button>
    <button id="btn-box6">slideUp</button>
    <button id="action1" style="color: red;">普通嵌套寫法 地獄回調</button>
    <button id="action2" style="color: green;">jQuery動畫隊列回調</button>
    <div class="container">
        <div class="box">
        </div>
    </div>
    <div id="wrap1" style="color: red;"></div>
    <div id="wrap2" style="color: green;"></div>
    <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
    <script type="text/javascript">
        $('#btn-box1').on('click', function () {
            $('.box').show('normal')
        })

        $('#btn-box2').on('click', function () {
            $('.box').hide('normal')
        })

        $('#btn-box3').on('click', function () {
            $('.box').fadeIn()
        })

        $('#btn-box4').on('click', function () {
            $('.box').fadeOut()
        })

        $('#btn-box5').on('click', function () {
            $('.box').slideDown()
        })

        $('#btn-box6').on('click', function () {
            $('.box').slideUp()
        })

        $('#action1').on('click', function () {
            var $box = $('.box')

            //回調地獄寫法
            $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í)行完畢')
                                    $('#wrap1').text('動畫執(zhí)行完畢')
                                })
                            })
                        })
                    })
                })
            })
        })

        $('#action2').on('click', function () {
            var $box = $('.box')

            //使用jQuery動畫隊列寫法
            $box.hide(1000)
                .show(1000)
                .fadeOut('slow')
                .fadeIn('slow')
                .slideUp()
                .slideDown(function () {
                    console.log('真的執(zhí)行完畢了')
                    $('#wrap2').text('真的執(zhí)行完畢了') //最后執(zhí)行同步回調
                })
            console.log('動畫完畢了嗎雹锣?') //動畫才剛開始网沾,在動畫隊列創(chuàng)建的時候,就輸出這句話笆制,異步
            $('#wrap2').text('動畫完畢了嗎绅这?')
        })
    </script>
</body>

</html>

效果預覽demo:動畫隊列demo

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市在辆,隨后出現(xiàn)的幾起案子证薇,更是在濱河造成了極大的恐慌,老刑警劉巖匆篓,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件浑度,死亡現(xiàn)場離奇詭異,居然都是意外死亡鸦概,警方通過查閱死者的電腦和手機箩张,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窗市,“玉大人先慷,你說我怎么就攤上這事∽刹欤” “怎么了论熙?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摄狱。 經(jīng)常有香客問我脓诡,道長,這世上最難降的妖魔是什么媒役? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任祝谚,我火速辦了婚禮,結果婚禮上酣衷,老公的妹妹穿的比我還像新娘交惯。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布商玫。 她就那樣靜靜地躺著箕憾,像睡著了一般牡借。 火紅的嫁衣襯著肌膚如雪拳昌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天钠龙,我揣著相機與錄音炬藤,去河邊找鬼。 笑死碴里,一個胖子當著我的面吹牛沈矿,可吹牛的內容都是我干的。 我是一名探鬼主播咬腋,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羹膳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了根竿?” 一聲冷哼從身側響起陵像,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寇壳,沒想到半個月后醒颖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡壳炎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年泞歉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片匿辩。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡腰耙,死狀恐怖,靈堂內的尸體忽然破棺而出铲球,到底是詐尸還是另有隱情挺庞,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布睬辐,位于F島的核電站挠阁,受9級特大地震影響,放射性物質發(fā)生泄漏溯饵。R本人自食惡果不足惜侵俗,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丰刊。 院中可真熱鬧隘谣,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至码泛,卻和暖如春猾封,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背噪珊。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工晌缘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痢站。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓磷箕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阵难。 傳聞我的和親對象是個殘疾皇子岳枷,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容

  • 隊列實現(xiàn)是jQuery非常棒的一個拓展,使用動畫隊列可以使動畫更容易實現(xiàn)呜叫。 .animate( propertie...
    初入前端的小菜鳥閱讀 281評論 0 0
  • 隊列 隊列的本質是一個數(shù)組空繁,對隊列的理解先從數(shù)組的push和shift開始。push是從數(shù)組尾端插入新的元素怀偷,sh...
    好奇男孩閱讀 1,160評論 0 2
  • 動畫隊列 動畫隊列可以說是動畫執(zhí)行的一個順序機制家厌,當我們對一個對象添加多次動畫效果時后,添加的動作就會被放入這個動...
    e81bcd463937閱讀 154評論 0 0
  • jQuery 動畫隊列 動畫隊列的方法: 我們知道jQuery提供了以下幾種方法來操作動畫隊列: stop([cl...
    饑人谷_Wing閱讀 440評論 0 0
  • ⒈今天把學到的“我是誰”找伍姐嘗試了一番椎工,伍姐說感覺蠻好的饭于,其實我還想更多的深挖,希望能給伍姐更多的心理營養(yǎng)的维蒙,還...
    Luuq閱讀 210評論 0 0