<p style="text-align: center">
前端使用 SPA 之后,能获得更多的控制权,比如页面切换动画,使用后端页面我们可能做不了上面的效果,或者做出来会出现明显的闪屏。因为所有资源都需要重新加载。
今天使用 vue,vue-router,animejs 来讲解如何上面的效果是如何实现的。
步骤
- 点击菜单,生成 Bubble,开始执行入场动画
- 页面跳转
- 执行退场动画
函数式调用组件
我希望效果是通过一个对象去调用,而不是 v-show,v-if 之类的指令,并且为了保持统一,仍然使用 Vue 来写组件。我通常会用新的 Vue 根节点来实现,让效果独立于业务组件之外。
{
return getInstance().animate('scaleIn')
},fadeOut: () => {
return getInstance().animate('fadeOut')
}
}
接着实现 BubbleTransitionComponent,那么 BubbleTransition.scaleIn,BubbleTransition.scaleOut 就能正常工作了。 animejs 可以监听的动画执行结束的事件。anime().finished 获得 Promise 对象。