You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt 3.0.0及Nitro 1.0.0过渡/动画失效问题求助

Nuxt 3 路由过渡失效问题解决方案

核心结论

Nuxt 3.0.0 及 rc13+ 并未移除动画相关核心依赖,但路由过渡的实现逻辑在 rc13 版本后发生了破坏性调整,导致旧写法直接失效。

问题根源

rc12 及更早版本中,Nuxt 会默认在全局路由组件上自动注入过渡触发逻辑,无需额外配置就能生成enter/leave类;但从 rc13 开始,为了对齐 Vue 3 原生过渡 API 并提升自定义灵活性,默认全局过渡逻辑被移除,需要开发者显式声明过渡配置。

修复步骤

  1. 显式配置页面过渡
    在app.vue或布局组件中,为<NuxtPage>添加transition属性:

    <template>
      <NuxtPage transition="page" />
    </template>
    
  2. 适配 Vue 3 标准过渡类名
    旧版的enter/leave类名已不再生效,需改用 Vue 3 过渡系统的标准命名:

    .page-enter-from,
    .page-leave-to {
      opacity: 0;
      transform: translateX(20px);
    }
    .page-enter-active,
    .page-leave-active {
      transition: all 0.3s ease;
    }
    .page-enter-to,
    .page-leave-from {
      opacity: 1;
      transform: translateX(0);
    }
    
  3. 全局统一配置(可选)
    如果需要给所有页面应用相同过渡效果,可在nuxt.config.ts中全局配置:

    export default defineNuxtConfig({
      app: {
        pageTransition: { name: 'page', mode: 'out-in' }
      }
    })
    

额外排查要点

  • 检查app.vue是否正确挂载了<NuxtPage>组件,未遗漏核心路由出口
  • 确认没有在nitro.config.ts中启用experimental.noScripts等禁用客户端脚本的配置
  • 排查第三方 UI 库或自定义样式是否覆盖了过渡类的优先级

内容的提问来源于stack exchange,提问作者IT Time Programming

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:20:29