在Vue-Router中使用跳转动画

在Vue-Router中使用跳转动画

过渡动效

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

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

Transition 的所有功能 在这里同样适用。

#单个路由的过渡

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

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

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

#基于路由的动态过渡

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

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- 使用动态的 transition name -->
<transition :name="transitionName">
<router-view></router-view>
</transition>
// 接着在父组件内
// watch $route 决定使用哪种过渡
watch: {
'$route' (to, from) {
const toDepth = to.path.split('/').length
const fromDepth = from.path.split('/').length
this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
}
}

在Vue-Router中使用跳转动画

https://www.borgor.cn/posts/789de642.html

作者

Cyrusky

发布于

2019-07-25

更新于

2024-11-18

许可协议

评论