jQuery 的動畫為了穩定與兼容的的選擇,所以即使在目前的 2.1.1 的版本中也是采用的幀動畫而不是最新的 CSS3 動畫,至于原因當然有很多我們這里就只涉及框架的幀動畫的處理,幀動畫的實現動畫的原理跟動畫片的制作一樣。動畫片是把一些差距不大的原畫以一定幀數播放, js 動畫是靠連續改變元素的某個 css 屬性值,比如 left, top 達到視覺的動畫效果。
book.animate({ left: '+=50', }).animate({ left: '+=100', }).animate({ left: '-=50', });
這里是一組最簡單的動畫,但是在設計上會有一個最重要的問題:
因為動畫是異步的,但是 animate 方法的鏈式代碼是同步的,所以這里要涉及一個最重要的問題,動畫隊列要如何有序的調用?
傳統的思路
jQuery 為動畫量身定制了隊列機制,我們的思路可以是這樣
總結
兩方方法都是利用異步收集同步的代碼,區別就是一個是靠定時器,一個是靠動畫自身,所以在精確度上來說顯然是動畫自身控制是最合理的。好比我們去面試,面試官只要讓每一個面試完畢的人去通知后面的人繼續進來面試一樣,如此反復
右邊代碼,請在支持 webkit 的瀏覽器下面調試,谷歌、急速360。
請驗證,完成請求
由于請求次數過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報