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

Vue3项目路由页面animation与transition切换动画不生效求助

Vue3路由切换过渡动画不生效排查方案
    1. 修正key绑定位置
      你当前把key绑定在了<router-view>上,应该将唯一key绑定到<transition>的直接子元素<component>上,才能让transition正确检测组件的切换变化,修正后的模板代码如下:
<template>
  <app-header />

  <router-view v-slot="{ Component }">
    <transition name="fade" mode="out-in">
      <component :is="Component" :key="$route.fullPath" />
    </transition>
  </router-view>

  <app-footer />
  <div @click="pageTop()" class="downUpArrow">
    <i class="fas fa-chevron-up"></i>
  </div>
</template>

注:你代码中原<app-foother>拼写有误,同步修正为<app-footer>

    1. 检查是否添加了正确的Vue3过渡样式
      Vue3的过渡类名和Vue2有差异,不要使用旧的fade-enter、fade-leave类名,需要使用如下标准的Vue3过渡类名定义样式:
/* 进入动画的开始状态、离开动画的结束状态 */
.fade-enter-from,
.fade-leave-to {
  opacity: 0;
  transform: translateX(10px);
}
/* 进入和离开过程中的过渡配置 */
.fade-enter-active,
.fade-leave-active {
  transition: all 0.3s ease;
}
/* 进入动画的结束状态、离开动画的开始状态 */
.fade-enter-to,
.fade-leave-from {
  opacity: 1;
  transform: translateX(0);
}
    1. 确认路由对应的页面组件为单根结构
      Vue3支持多根组件,但<transition>仅能对单根元素生效,如果你切换的页面组件是多根结构,需要给页面组件外层加一个统一的根元素包裹,比如用<div>把整个页面组件的内容包起来。
    1. 检查是否有全局样式冲突
      如果有全局的* { transition: none !important }之类的样式,或者页面组件根元素上定义了优先级更高的transition样式覆盖了过渡类的配置,也会导致动画失效,可以在浏览器开发者工具中检查元素的样式优先级确认。

内容的提问来源于stack exchange,提问作者rtyuttter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 09:09:03