var playPauseAnim = motion('div',{
translateX: 250,
}, {
direction: 'alternate',
loop: true,
autoPlay: false // prevent the instance from playing
});
playPauseAnim.play(); // Manually play
playPauseAnim.pause(); // Manually pause
playPauseAnim.finish(); // Manually finish
playPauseAnim.restart(); // Restart the animation and reset the loop count / current direction
playPauseAnim.reverse(); // Change the animation direction
playPauseAnim.finished : // returns a Promise object which will resolve once the animation has finished running.
motion.js
能够学到什么?
具体到这个项目
1. 实现什么,解决什么问题?
2. 思路:
怎么实现: dom 动画的本质是什么? JS_DOM动画的实现原理?怎么让一个元素动起来。 学习和借鉴velocity.js , anime.js
3. API设计和实现
4. 具体代码编写
5. 优化和测试
(version: 0.1.0)
(知识体系: EventEmitter, Promise, queue, generator等) (设计模式:迭代器模式、外观模式、策略模式、命令模式等)
API
1.主函数
explain:
7: callbacks:
begin: (动画开始的时候执行) run: (动画每帧的时候执行一次) done: (动画结束的时候执行一次)
动画队列: sequence (参考jquery的queue或者ES6的generator)
play, pause, restart
easing Functions
Penner's equations:
anime.js学习分析
结构分析
Default Config
默认配置(实例,缓动函数,可以作为动画属性的transform属性)
Util工具函數
includes,
is,
bezier_function,
easing_function(['Quad', 'Cubic', 'Quart', 'Quint', 'Sine', 'Expo', 'Circ', 'Back', 'Elastic']),
string manipulate function
arrays manipulate function
object manipulate function
color => rgb (hex, hsl => rgb)
get property Unit (20px,em, deg => px, em, deg)
get property Unit (20px,em, deg => px, em, deg)
获取运动元素的value值
getAnimationType (normal css, transform, attribute(like scrollTop, scrollLeft))
getOriginalTargetValue()
获取运动元素的所有课进行动画的属性
获取运动元素的路径
获取运动元素
normalizeTweens()该函数将所有的参数解析成一个运动对象配置。
创建实例
createNewInstance(params) => return config object;
CORE MODULE
动画引擎engine
用于定义requestAnimationFrame来真正的形成动画效果。
动画实例函数对象
动画引擎所需知识点
1. 准确的获取元素的样式(包含普通样式,transform样式,颜色rgb值)
2. 熟悉常用的缓动函数(easeIn, easeOut, easeInOut, linear;)
3. API设计
4. requestAnimationFrame
5. css3的一些动画知识