在最近一段时间的工作里,常常用到动画,我主要接触了三个
下面分析一下他们的优缺点
animate.css
优点:
animate.css主要是使用css实现动画效果,目前已经有几十种预定义的动画,使用起来非常简便,基本上都能找到我们想要的动画效果,通过给dom
结构添加相应的类.animated .动效类
这个dom
就拥有了动效。是不是非常的简单。
API(假装是正确的翻译)
fade: {
title: '淡入淡出',
fadeIn: '淡入',
fadeInDown: '向下淡入',
fadeInDownBig: '向下快速淡入',
fadeInLeft: '向右淡入',
fadeInLeftBig: '向右快速淡入',
fadeInRight: '向左淡入',
fadeInRightBig: '向左快速淡入',
fadeInUp: '向上淡入',
fadeInUpBig: '向上快速淡入',
fadeOut: '淡出',
fadeOutDown: '向下淡出',
fadeOutDownBig: '向下快速淡出',
fadeOutLeft: '向左淡出',
fadeOutLeftBig: '向左快速淡出',
adeOutRight: '向右淡出',
fadeOutRightBig: '向右快速淡出',
fadeOutUp: '向上淡出',
fadeOutUpBig: '向上快速淡出'
},
bounce: {
title: '弹跳类',
bounceIn: '弹跳进入',
bounceInDown: '向下弹跳进入',
bounceInLeft: '向右弹跳进入',
bounceInRight: '向左弹跳进入',
bounceInUp: '向上弹跳进入',
bounceOut: '弹跳退出',
bounceOutDown: '向下弹跳退出',
bounceOutLeft: '向左弹跳退出',
bounceOutRight: '向右弹跳退出',
bounceOutUp: '向上弹跳退出'
},
zoom: {
title: '缩放类',
zoomIn: '放大进入',
zoomInDown: '向下放大进入',
zoomInLeft: '向右放大进入',
zoomInRight: '向左放大进入',
zoomInUp: '向上放大进入',
zoomOut: '缩小退出',
zoomOutDown: '向下缩小退出',
zoomOutLeft: '向左缩小退出',
zoomOutRight: '向右缩小退出',
zoomOutUp: '向上缩小退出'
},
rotate: {
title: '旋转类',
rotateIn: '顺时针旋转进入',
rotateInDownLeft: '从左往下旋入',
rotateInDownRight: '从右往下旋入',
rotateInUpLeft: '从左往上旋入',
rotateInUpRight: '从右往上旋入',
rotateOut: '顺时针旋转退出',
rotateOutDownLeft: '向左下旋出',
rotateOutDownRight: '向右下旋出',
rotateOutUpLeft: '向左上旋出',
rotateOutUpRight: '向右上旋出'
},
flip: {
title: '翻转类',
flipInX: '水平翻转进入',
flipInY: '垂直翻转进入',
flipOutX: '水平翻转退出',
flipOutY: '垂直翻转退出'
},
strong: {
title: '强调类',
bounce: '弹跳',
flash: '闪烁',
pulse: '脉冲',
rubberBand: '橡皮筋',
shake: '左右弱晃动',
swing: '上下摆动',
tada: '缩放摆动',
wobble: '左右强晃动',
jello: '拉伸抖动'
}
使用栗子
$('#yourElement').addClass('animated bounceOutLeft');
缺点:
1、animated.css
官方提供了几十种动效,但是总会遇到一些动效可能需要修改,或者有些动效他名没有提供。这个时候,animate.css
就显得有点吃力了,因为目前没提供自定义的动画api
。
2、假如我们dom
结构已经有 tranform或者其他相关的css设置
,这个时候通过添加animted
的动画类,那么我们原来的css
效果会 被覆 盖。解决方案只能是在dom的外围再用一个div.wrap
包含着 然后把动画效果加载.wrap
中来避免覆盖原有效果,相关讨论issue
velocity
优点:
1、Velocity
是一个简单易用、高性能、功能丰富的轻量级JS动画库。它能和 jQuery 完美协作,并和$.animate()
有相同的 API
, 但它不依赖 jQuery
,可单独使用。 Velocity
不仅包含了 $.animate()
的全部功能, 还拥有:颜色动画、转换动画(transforms)、循环、 缓动、SVG 动画、和 滚动动画 等特色功能
。
支持原生js,jq,react
写法,作为vue
粉,失望的是,他暂时没有vue
相关的插件
2.也有几十种类似animate.css
的预定义动画api
3.支持自定义动效,拼装队列动效等等
4.动画回调 比如 Begin & Complete & Progress
回调函数
中文文档请点击
缺点:
1.其实我觉得对我而言,满足我各种需求,没啥缺点,要一定得揪点的话,我能说api
demo 不够多,需要自己多尝试各种组装。
2.目前很多童鞋比较少去用jquery
的情况下,Velocity
就丧失了很多有点,比如他自定义的动画就是结合Velocity-ui + jq
的
anime
anime.js(/ˈæn.ə.meɪ/)
是一个轻量、灵活的JavaScript
动画库.他可以配合css,svg,Dom
节点和js
对象工作。
其实用了velocity
的人大可不必再去用anime
因为anime
拥有的,并且velocity
兼容性要比anime
好
但是恰巧我用了。。。所以就说说吧
优点:
1.可自定义动画效果,支持队列动效
2.支持begin, run, update, complete
回调函数
3.支持动画的play(),pause(),restart()等等功能
缺点:
1.缺少自定义特效
2.文档demo比较少
使用遇到的小问题:
1.默认不是匀速的,需要设置 easing: 'liner'
(详细整理待续)