在最近一段時間的工做裏,經常用到動畫,我主要接觸了三個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'
(詳細整理待續)