0%

vue-router过渡动效

过渡动效

<router-view> 是基本的动态组件, 所以我们可以用 <transition> 组件给他添加一些过渡效果

1
2
3
<transition>
<router-view></router-view>
</transition>

单个路由的过渡

上面的用法会给所有的路由设置一样的过渡效果, 如果想让每个路由组件有各自的过渡效果, 可以在各路由组件内使用 <transition> 并设置不同的 name

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const Foo = {
template: `
<transition>
<div class="foo"> ... <div>
</transition>
`
}

const Bar = {
template: `
<transition>
<div class="bar"> ... </div>
</transition>
`
}

基于路由的动态过渡

还可以基于当前路由与目标路由的变化关系, 动态设置过渡效果

1
2
3
4
 <transition :name="transitionNmae">
<router-view>
</router-view>
</transition>
1
2
3
4
5
6
7
wathc: {
"$route"(to, from) {
const toDepth = to.path.split('/').length
const fromDepth = from.path.split('/').length
this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
}
}
请作者喝杯咖啡