Vue Router 4 提供了强大的动态过渡动效功能,可以让你的页面在路由切换时有流畅的过渡效果。这主要通过 Vue 的 <transition>
组件实现。
基本使用
首先,我们需要在路由组件外部包裹一个 <transition>
组件。然后,给 <transition>
组件一个 name
属性,这个属性将决定过渡效果的类型。
<template><transition name="fade"><router-view></router-view></transition>
</template>
在上面的代码中,我们定义了一个名为 fade
的过渡效果。
接下来,我们需要在 CSS 中定义 fade
过渡的具体样式。Vue 提供了四个类名,分别对应过渡的四个阶段:进入前、进入后、离开前、离开后。
.fade-enter-active, .fade-leave-active {transition: opacity .5s;
}
.fade-enter, .fade-leave-to {opacity: 0;
}
在上面的 CSS 中,我们定义了 fade
过渡的样式。当路由组件进入和离开时,它的透明度将在半秒内从 0 变为 1,或从 1 变为 0。
进阶使用
除了基本的过渡效果外,Vue Router 4 还支持根据路由的不同,动态改变过渡效果。这需要使用到 Vue Router 的 meta
属性和 Vue 的动态绑定功能。
首先,我们在路由配置中,通过 meta
属性为每个路由指定一个过渡效果。
const routes = [{ path: '/foo', component: Foo, meta: { transition: 'fade' }},{ path: '/bar', component: Bar, meta: { transition: 'slide' }}
]
然后,我们可以通过 $route.meta.transition
动态获取当前路由的过渡效果,并绑定到 <transition>
组件的 name
属性。
<template><transition :name="$route.meta.transition"><router-view></router-view></transition>
</template>
在上面的代码中,当路由切换时,过渡效果将根据新路由的 meta.transition
属性动态改变。
在实际开发中,你可以根据项目的需要,自由地定义和使用各种过渡效果,提升用户体验。