Vue 路由切换时如何加过渡动画?

东方子涵 阅读 5

我在用 Vue Router 做页面切换,想加个淡入淡出的过渡效果,但试了几次都没生效。是不是我写法有问题?

我已经在 router-view 外面包了 transition,也写了对应的 CSS 类名,但页面切换时完全没动画。

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.3s ease;
}
.fade-enter-from, .fade-leave-to {
  opacity: 0;
}
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
茂庭 Dev
遇到这个问题,首先检查一下你的 router-view 是否被 transition 正确包裹。然后确保你的 CSS 类名没有拼写错误。你已经写的 CSS 没问题,关键是要保证 Vue 的过渡系统能正常工作。

确保你的代码结构类似这样:





注意这里用了 mode="out-in",这样可以避免两个路由同时显示的尴尬情况。

另外,检查一下你的 Vue 和 Vue Router 版本是否是最新的,有时候版本问题也会导致奇怪的行为。

如果还是不行,尝试在浏览器里打开开发者工具,看看是否有任何 JavaScript 错误或者 CSS 被覆盖的情况。有时候浏览器缓存也会捣乱,清除缓存后再试一次。性能上这没啥开销,但是能排除一些基本问题。
点赞
2026-03-25 12:00