一个轻量型 DOM 动画框架
- 无外部库依赖
- 参数灵活且友好
- 动画流畅,保证 60 帧每秒
- 支持 http://easings.net/zh-cn 上所有的缓动特效
- 支持多个元素同时运动
- 支持动画完结回调,实现链式动画
- 支持 CSS3 transform 动画
对可选参数的先后顺序无要求,但对数据类型有要求。
- Type:
HTMLElement
需要添加动画的 DOM 元素
- Type:
Object
样式配置对象,支持大部分动画属性(自动补全、纠正单位),例如:
move(document.body, {
width: 500,
// 单位 'px' 会自动补全,推荐直接使用数值
borderTopWidth: '100px',
opacity: 0.5,
// backgroundSize 可以使用百分数字符串('110%')也可以使用数值(1.1)表示
backgroundSize: 1.1,
// CSS3 动画支持,详细说明见[扩展 - CSS3 动画](#扩展css3-动画)
translateX: 300
});查看支持哪些属性,请去往 Demo 和 Demo - CSS3 动画演示。
- Type:
Number - Default: 400
- Type:
String - Default:
linear
缓动函数名,默认为匀速线性变化,所有支持的缓动函数名称见:http://easings.net/zh-cn
注:缓动函数全部存储在 Math.TWEEN 属性对象上,打开控制台打印 Math.TWEEN 查看详情。
- Type:
Fucntion
动画完毕时的回调函数,可以借助回调函数实现链式动画。
有两种方式帮助我们实现多个元素同时运动
// 方式1:#a, #b, #c 同时运动
move('#a', {width: 300});
move('#b', {width: 1000});
move('#c', {opacity: .5});// 方式2:类名为 .box 所有元素同时运动
move.each(document.getElementsByClassName('.box'), {width: 1000, opacity: 0.5});
// 支持回调
move.each($('div'), {opacity: 0.5}, 1000, function() {
move.each(document.getElementsByTagName('DIV'), {height: 100, opacity: 1, marginTop: 20}, 1000)
});框架支持 CSS3 transform 动画(见 Demo),但是是有条件地支持:
- 框架只获取与解析你在 DOM 元素的 style 属性内声明的 transform 属性,写在 CSS 文件内的 transform 属性不获取
- 支持的变形函数:
translateXtranslateYtranslateZrotaterotateXrotateYrotateZscalescaleXscaleYscaleZskewskewXskewYperspective
现代浏览器获取计算后的 transform 时返回的是一个 matrix() 函数,处理提取起来比较困难,运动框架默认支持提取与解析 DOM 元素 style 属性内的 transform 字符值。所以,如果你对 CSS3 动画及其性能有较高要求,请直接使用 CSS3 原生动画。
IE9 的 transform 样式无法正常获取,故不考虑支持。
例如:滚动至页面顶部
move.scroll(0, 1000, 'easeInQuad', function() {
console.log('done!');
})例如:滚动至页面底部
move.scroll(document.body.scrollHeight, 'easeInOutExpo');- 兼容至
IE8IE9(天猫和淘宝近期宣布放弃对 IE8 的支持,腾讯企业号和企业微信近期也决定放弃对 IE8 的支持) - 支持
backgroundSize百分字符串与数值两种值类型 - Demo 完善,功能展示补全
- 支持 CSS3 属性动画
- 添加页面滚动动画支持
move.scroll() - 支持多个元素同时运动
move.each()
如果这个运动框架帮助了你的开发,希望你能回来这里点个 Star!