在最近一段时间的工做里,经常用到动画,我主要接触了三个css
下面分析一下他们的优缺点react
优势:
animate.css主要是使用css实现动画效果,目前已经有几十种预约义的动画,使用起来很是简便,基本上都能找到咱们想要的动画效果,经过给dom
结构添加相应的类.animated .动效类
这个dom
就拥有了动效。是否是很是的简单。
API(伪装是正确的翻译) jquery
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: '拉伸抖动' }
使用栗子git
$('#yourElement').addClass('animated bounceOutLeft');
缺点:github
一、animated.css
官方提供了几十种动效,可是总会遇到一些动效可能须要修改,或者有些动效他名没有提供。这个时候,animate.css
就显得有点吃力了,由于目前没提供自定义的动画api
。api
二、假如咱们dom
结构已经有 tranform或者其余相关的css设置
,这个时候经过添加animted
的动画类,那么咱们原来的css
效果会 被覆 盖。解决方案只能是在dom的外围再用一个div.wrap
包含着 而后把动画效果加载.wrap
中来避免覆盖原有效果,相关讨论issuedom
优势:svg
一、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.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'
(详细整理待续)