Nuxt页面切换时过渡动画不生效是怎么回事?

辽源🍀 阅读 73

我在 Nuxt 3 项目里给页面加了 transition,但切换路由时完全没看到动画效果,好像直接跳转了。明明在 pages/index.vue 里写了 definePageMeta({ pageTransition: 'slide' }),也写了对应的 CSS 动画类。

试过把 transition 名字改成默认的 page,还是不行。控制台也没报错,就是静悄悄地切换。是不是还要在 app.vue 里额外配置什么?

.slide-enter-active,
.slide-leave-active {
  transition: all 0.5s ease;
}
.slide-enter-from {
  opacity: 0;
  transform: translateX(100px);
}
.slide-leave-to {
  opacity: 0;
  transform: translateX(-100px);
}
我来解答 赞 12 收藏
二维码
手机扫码查看
2 条解答
IT人建梗
Nuxt 3 的页面过渡动画有时候确实挺让人头疼的。你在 pages/index.vue 里定义了 definePageMeta 和 CSS 动画类,看起来都对头了。不过,Nuxt 3 路由过渡需要全局配置一下。

你可以在 app.vue 里包裹一个 组件,并设置 transition 属性。确保这个 transition 名称跟你在 definePageMeta 里定义的一致。比如这样:

pre class="pure-highlightjs line-numbers">



这里的 mode: 'out-in' 是可选的,用来控制新页面进来前旧页面是否先出去,根据你的需求调整。

另外,检查一下你的 CSS 是否正确加载了,有时候缓存问题也会导致样式不生效。清个浏览器缓存试试。

如果还是不 work,可能是版本问题或者 Nuxt 配置有坑,看看 Nuxt 官方论坛或者 GitHub Issues,说不定有人遇到过类似问题。
点赞
2026-03-22 09:06
程序猿士轩
我之前也遇到过,Nuxt 里 pageTransition 要生效得在 app.vue 里用 包一下,并且确保没在 里又嵌套 。你贴的 CSS 是对的,但检查下 app.vue 是否是这样写的:

<template>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</template>


如果用了自定义 layout,记得 layout 里也得有
点赞 4
2026-02-24 06:02