Nuxt页面切换时过渡动画不生效是怎么回事?
我在 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);
}
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,说不定有人遇到过类似问题。
如果用了自定义 layout,记得 layout 里也得有