当前位置:首页 > VUE

vue 实现跳转动画

2026-01-22 01:54:58VUE

Vue 路由跳转动画实现

在 Vue 中实现页面跳转动画可以通过 Vue Router 的过渡效果和 CSS 动画结合完成。以下是几种常见方法:

使用 Vue Transition 组件

在 App.vue 或布局组件中包裹 <router-view>,并添加过渡效果:

<template>
  <router-view v-slot="{ Component }">
    <transition name="fade" mode="out-in">
      <component :is="Component" />
    </transition>
  </router-view>
</template>

<style>
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s ease;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}
</style>

实现滑动动画

通过 CSS transform 属性实现左右滑动效果:

.slide-left-enter-active,
.slide-left-leave-active,
.slide-right-enter-active,
.slide-right-leave-active {
  transition: all 0.5s ease;
}

.slide-left-enter-from {
  transform: translateX(100%);
}

.slide-left-leave-to {
  transform: translateX(-100%);
}

.slide-right-enter-from {
  transform: translateX(-100%);
}

.slide-right-leave-to {
  transform: translateX(100%);
}

动态过渡名称

根据路由变化方向应用不同动画:

<script setup>
import { ref, watch } from 'vue'
import { useRouter } from 'vue-router'

const router = useRouter()
const transitionName = ref('slide-left')

watch(router.currentRoute, (to, from) => {
  const toDepth = to.meta.depth || 0
  const fromDepth = from.meta.depth || 0
  transitionName.value = toDepth > fromDepth ? 'slide-left' : 'slide-right'
})
</script>

<template>
  <router-view v-slot="{ Component }">
    <transition :name="transitionName">
      <component :is="Component" />
    </transition>
  </router-view>
</template>

使用 GSAP 实现高级动画

安装 GSAP 库实现更复杂的动画效果:

npm install gsap

在路由守卫中使用 GSAP:

import { gsap } from 'gsap'

router.beforeEach((to, from, next) => {
  gsap.to('.page-container', {
    duration: 0.5,
    opacity: 0,
    y: 50,
    onComplete: next
  })
})

router.afterEach(() => {
  gsap.from('.page-container', {
    duration: 0.5,
    opacity: 0,
    y: -50
  })
})

页面单独控制动画

在页面组件中定义进入和离开动画:

vue 实现跳转动画

<script>
export default {
  beforeRouteLeave(to, from, next) {
    this.animateOut(() => next())
  },
  methods: {
    animateOut(callback) {
      // 自定义离开动画逻辑
      callback()
    }
  }
}
</script>

注意事项

  • 使用 mode="out-in" 确保当前元素先完成离开动画,新元素再进入
  • 避免在移动设备上使用性能开销大的动画
  • 考虑添加 will-change 属性优化动画性能
  • 测试不同路由跳转场景确保动画连贯性

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

相关文章

vue实现ios动画

vue实现ios动画

Vue 实现 iOS 动画的方法 使用 CSS Transition 和 Vue 的过渡系统 Vue 提供了内置的过渡系统,可以通过 <transition> 组件实现动画效果。结合 CS…

php怎样实现页面跳转页面

php怎样实现页面跳转页面

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

vue动画实现折叠

vue动画实现折叠

使用 Vue Transition 实现折叠动画 在 Vue 中可以通过 <transition> 组件和 CSS 过渡实现折叠效果。核心原理是动态切换元素的 height 属性,配合 o…

js怎么实现网页跳转

js怎么实现网页跳转

使用 window.location.href 修改 window.location.href 可以直接跳转到新的 URL。这是最常见的方法之一,适用于大多数场景。 window.location.…

vue实现过渡动画

vue实现过渡动画

Vue 过渡动画实现方法 Vue 提供了内置的 <transition> 和 <transition-group> 组件,用于处理进入/离开过渡和列表动画。以下是几种常见的实现…

vue 实现动画效果

vue 实现动画效果

Vue 实现动画效果的方法 Vue 提供了多种方式实现动画效果,包括内置的过渡系统、第三方动画库以及 CSS 动画。以下是几种常见的方法: 使用 Vue 内置过渡系统 Vue 的 <trans…