当前位置:首页 > VUE

vue 实现跳转动画

2026-02-22 17:01:20VUE

Vue 实现跳转动画的方法

使用 Vue Router 的过渡效果

Vue Router 内置支持过渡效果,可以通过 <transition> 组件结合 CSS 实现页面跳转动画。在路由视图外层包裹 <transition> 并定义动画样式。

<transition name="fade" mode="out-in">
  <router-view></router-view>
</transition>

CSS 动画定义:

.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}

动态路由过渡

根据路由变化动态设置过渡效果,通过监听路由变化修改过渡名称。

<transition :name="transitionName">
  <router-view></router-view>
</transition>
data() {
  return {
    transitionName: 'slide-left'
  }
},
watch: {
  '$route'(to, from) {
    const toDepth = to.meta.depth
    const fromDepth = from.meta.depth
    this.transitionName = toDepth < fromDepth ? 'slide-right' : 'slide-left'
  }
}

使用 Animate.css 库

集成第三方动画库快速实现丰富效果,安装后直接应用预设动画类。

npm install animate.css
<transition
  enter-active-class="animate__animated animate__fadeIn"
  leave-active-class="animate__animated animate__fadeOut"
>
  <router-view></router-view>
</transition>

组件内守卫控制动画

利用路由守卫在跳转前后执行动画逻辑,适用于需要精细控制的场景。

beforeRouteEnter(to, from, next) {
  // 进入前触发动画
  document.querySelector('.page-container').classList.add('fade-out')
  setTimeout(() => next(), 500)
},
beforeRouteLeave(to, from, next) {
  // 离开前触发动画
  this.$el.classList.add('fade-out')
  setTimeout(next, 500)
}

状态管理配合动画

通过 Vuex 管理全局动画状态,实现跨组件协调的动画效果。

vue 实现跳转动画

// store.js
state: {
  isLoading: false
},
mutations: {
  setLoading(state, payload) {
    state.isLoading = payload
  }
}
// 路由跳转时
this.$store.commit('setLoading', true)
setTimeout(() => {
  this.$router.push('/target')
  this.$store.commit('setLoading', false)
}, 1000)

注意事项

  • 过渡模式 mode="out-in" 可防止相邻路由组件同时执行动画
  • 移动端注意硬件加速优化,使用 transform 替代 top/left 属性
  • 复杂动画考虑使用 GSAP 等专业动画库
  • 始终定义 leave-active 类确保离开动画完整执行

标签: 跳转动画
分享给朋友:

相关文章

vue实现共享动画

vue实现共享动画

Vue 共享动画实现方法 使用 Vue Transition 组件 Vue 内置的 Transition 组件可以实现元素进入/离开的过渡效果。通过命名过渡和 mode 属性可以控制多个元素的过渡顺序…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

vue实现跳转高亮

vue实现跳转高亮

Vue实现路由跳转高亮 在Vue项目中实现导航菜单跳转高亮效果,通常结合vue-router的active-class特性。以下是几种常见实现方式: 使用router-link的active-cla…

php怎样实现页面跳转页面

php怎样实现页面跳转页面

PHP实现页面跳转的方法 使用header()函数实现跳转 通过设置HTTP头信息中的Location字段实现跳转,需确保在调用前没有输出任何内容。示例代码: header("Location: h…

uniapp 退场动画

uniapp 退场动画

实现退场动画的方法 在UniApp中实现退场动画可以通过CSS动画、Vue过渡效果或第三方动画库完成。以下是几种常见方法: 使用CSS动画 通过定义@keyframes和animation属性实现退…

vue中实现动画

vue中实现动画

vue中实现动画的方法 Vue提供了多种实现动画的方式,主要依赖于内置的<transition>和<transition-group>组件,以及结合CSS或JavaScript…