jQuery 動(dòng)畫(huà)其實(shí)原理上本身是不復(fù)雜的。量變產(chǎn)生質(zhì)變,參雜了大量的設(shè)計(jì)技巧,同時(shí)通過(guò)擴(kuò)展大量的便捷方式加大了邏輯上的難度,我們這章深入的認(rèn)識(shí)下 jQuery 的 API 的具體的含義以及實(shí)現(xiàn)上的一些細(xì)節(jié)。
jQuery 動(dòng)畫(huà)是通過(guò) animate 這個(gè) API 設(shè)置執(zhí)行的,其內(nèi)部也是按照每一個(gè) animate 的劃分封裝了各自動(dòng)畫(huà)組的行為,包括數(shù)據(jù)過(guò)濾、緩動(dòng)公式、一些動(dòng)畫(huà)默認(rèn)參數(shù)的設(shè)置、元素狀態(tài)的調(diào)整、事件的處理通知機(jī)制、執(zhí)行等等,換句話(huà)說(shuō),我們可以把 animate 看作一個(gè)對(duì)象,對(duì)象封裝自己的一系列屬性與方法,jQuery 可以支持連續(xù)動(dòng)畫(huà),那么 animate 與 animate 之間的切換就是通過(guò)隊(duì)列 queue,這個(gè)之前就已經(jīng)詳細(xì)的解釋過(guò)了。
動(dòng)畫(huà)的參數(shù)
jQuery的內(nèi)部的方法都是針對(duì) API 的處理范圍設(shè)計(jì)的,我們看看 Animation 方法的支持情況:
.animate( properties [, duration ] [, easing ] [, complete ] ) .animate( properties, options )
簡(jiǎn)單的來(lái)說(shuō),就是把一對(duì)的參數(shù)丟到 animate 方法里面,然后 animate 就開(kāi)始執(zhí)行你參數(shù)規(guī)定的動(dòng)畫(huà)了,那么動(dòng)畫(huà)每執(zhí)一次就會(huì)通過(guò)回調(diào)通知告訴開(kāi)發(fā)者,具體有 complete/done/fail/always/step 接口等。
理解定義(代碼參考右邊)
book.animate({ opacity: 0.25, left: '50', height: 'toggle' }, { duration :1000, specialEasing: { height: 'linear' }, step: function(now, fx) { console.log('step') }, progress:function(){ console.log('progress') }, complete:function(){ console.log('動(dòng)畫(huà)完成') } })
首先,動(dòng)畫(huà)的參數(shù)都是最終值,都是相對(duì)數(shù)據(jù)。
如上 div 元素的起始:
初步理解 API 的一些設(shè)置后,我們下一節(jié)研究下動(dòng)畫(huà)的變換算法。
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開(kāi)微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書(shū)簽
舉報(bào)