推荐三两款前端动画库,anitmate.css, velocity-animate, anime,

田焕
2023-12-01

在最近一段时间的工作里,常常用到动画,我主要接触了三个

animate.css
anime
velocity

下面分析一下他们的优缺点

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'

(详细整理待续)

 类似资料: