JQuery是用Javascript編寫的。作爲每個人都知道一點的人,我不得不想他們是如何寫出一些的。你如何在純Javascript中爲HTML元素添加動畫?它只是反覆更新要動畫的CSS屬性,使用標準的DOM操作,使用回調使其異步?還是更復雜一些?JQuery如何做動畫?
回答
jQuery動畫只是更新循環定時器的CSS屬性(這使得它是異步的)。
他們還實現了補間算法,該算法可以跟蹤動畫是提前還是落後於計劃,並且可以根據需要調整每個步驟的動畫步長以趕上或減慢。這允許動畫在指定的時間內完成,而不管主機有多快。不足之處在於慢速或繁忙的計算機會顯示更多不連貫的動畫。
它們還支持控制動畫加速的時間/形狀的緩動功能。 Linear
意味着恆定的速度。 Swing
是一個比較典型的,啓動緩慢,中間加速到最大速度,然後慢慢結束。
由於動畫是異步的,因此jQuery還實現了一個動畫隊列,以便您可以指定要看到的多個動畫。第二個動畫從第一個動畫完成時開始,等等。 jQuery還提供了一個完成函數,所以如果你想在動畫完成時運行一些你自己的代碼,你可以指定一個回調函數,當動畫完成時這個函數會被調用。這允許您在動畫完成時執行一些操作,例如開始其他對象的動畫,隱藏對象等等。
僅供參考,如果您需要更多詳細信息,請參閱jQuery javascript source code。這項工作的核心是一個名爲doAnimation()
的本地函數,儘管大部分工作都是在step
和update
函數中完成的,可以在jQuery.fx.prototype
的定義中找到。
在jQuery動畫期間檢查元素時,幾乎總是會更改CSS代碼,該代碼通過jQuery分配給該元素,而該代碼並非真正從您編寫的HTML分配的元素。如果你沒有用於firefox,並且在動畫執行時檢查發生了什麼,那麼獲取一個FireBug。
根據我的理解,它確實使用標準的JavaScript方法和屬性來定期更新DOM元素和CSS樣式(「ticks」),它使用標準的setInterval()
和setTimeout()
方法完成。
就是這樣:一個普通的舊setInterval和一些DOM操作。
當然,代碼比這更復雜一點。
Look:http://code.jquery.com/jquery-latest.js,接近文件末尾。搜索jQuery.fx.prototype。
- 1. 如何做jquery動畫正確浮動
- 2. 如何做羣像動畫?
- 3. 該動畫如何做?
- 4. 來自jQuery,如何在React.js中做DOM動畫?如動畫進度條?
- 5. 小jquery腳本。容易做到。動畫
- 6. jQuery的動畫()不工作,但CSS()做
- 7. 如何做一個特定的JQUERY文本動畫?
- 8. Jquery - 如何使用TweenMax做快速上推動畫?
- 9. jQuery和HTML 5如何做一些動畫?
- 10. 如何在jQuery中做這個簡單的動畫?
- 11. 如何做到這一點的jQuery/CSS動畫
- 12. jQuery如何實現動畫?
- 13. 如何循環。動畫JQuery
- 14. 如何反向jQuery動畫
- 15. 如何使用jQuery動畫
- 16. 如何複合jquery動畫
- 17. jquery:如何動畫moveup?
- 18. 如何在畫面中做動畫?創建動態條形圖
- 19. 如何使用performSelector:afterDelay:做動畫之後?
- 20. 我該如何在Android中做動畫
- 21. 如何在OpenGL中做2D動畫?
- 22. 如何做Android圖像動畫
- 23. 我該如何做這個動畫?
- 24. 我應該如何做圖像動畫?
- 25. 如何做Android COCOS-2d Menuitem動畫?
- 26. 如何在CSS中做逆向動畫?
- 27. 凹口在MiniCraft中如何做動畫?
- 28. 如何做進度條動畫?
- 29. 如何做像iButterfly的動畫?
- 30. 如何在Android中做'忙'動畫?
你知道你可以打開任何Jquery.js文件並親自體驗它嗎?這是官方的源代碼完整的:https://github.com/jquery/jquery/tree/master/src – asawyer 2012-03-28 22:16:25
[爲什麼不看看自己?](http://code.jquery.com/jquery- 1.7.2.js) – 2012-03-28 22:16:40
@asawyer是的,但來源不提供技術解釋。它只是表明它是如何下降的,而不是它爲什麼這樣做,以及這樣的理論上是如何工作的。 – 2012-03-28 22:32:08