当前位置:首页 > VUE

vue 实现切屏动画

2026-02-22 20:26:54VUE

实现基础切屏动画

使用 Vue 的 <transition> 组件包裹需要切换的元素,结合 CSS 过渡类名实现动画效果。通过 name 属性定义动画前缀,例如 name="fade" 会生成 .fade-enter-active 等类名。

<transition name="fade">
  <div v-if="show" key="content">内容区域</div>
</transition>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}

使用动态组件切换

结合 <component :is="currentComponent"> 实现组件级切屏动画,适用于多页面切换场景。每个组件需要设置唯一的 key 以保证过渡效果触发。

<transition name="slide" mode="out-in">
  <component :is="currentView" :key="currentView"></component>
</transition>
.slide-enter-active {
  animation: slideIn 0.3s;
}
.slide-leave-active {
  animation: slideOut 0.3s;
}
@keyframes slideIn {
  from { transform: translateX(100%); }
  to { transform: translateX(0); }
}
@keyframes slideOut {
  from { transform: translateX(0); }
  to { transform: translateX(-100%); }
}

路由切换动画

在 Vue Router 中使用 <router-view> 实现页面路由切换动画,通过路由元信息控制不同过渡效果。

<transition :name="transitionName">
  <router-view></router-view>
</transition>
watch: {
  '$route'(to, from) {
    this.transitionName = to.meta.transition || 'fade'
  }
}

使用第三方动画库

集成 animate.css 等动画库快速实现专业效果,通过自定义过渡类名直接应用预设动画。

<transition
  enter-active-class="animate__animated animate__fadeInLeft"
  leave-active-class="animate__animated animate__fadeOutRight"
>
  <div v-if="show">动画内容</div>
</transition>

手势驱动动画

通过 Hammer.js 等库实现手势滑动切屏,结合 Vue 的响应式数据控制动画状态。

import Hammer from 'hammerjs'

mounted() {
  const hammer = new Hammer(this.$el)
  hammer.on('swipeleft', () => {
    this.currentIndex = Math.min(this.currentIndex + 1, this.maxIndex)
  })
  hammer.on('swiperight', () => {
    this.currentIndex = Math.max(this.currentIndex - 1, 0)
  })
}

性能优化建议

对移动端设备启用硬件加速,使用 will-changetransform 属性提升动画流畅度。避免同时触发过多属性变化,优先使用 opacitytransform 进行动画处理。

vue 实现切屏动画

.optimized-animation {
  will-change: transform, opacity;
  transform: translateZ(0);
}

标签: 动画vue
分享给朋友:

相关文章

vue实现展开与收起

vue实现展开与收起

Vue 实现展开与收起功能 在 Vue 中实现展开与收起功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-if…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue 实现toast

vue 实现toast

vue 实现 toast 的方法 在 Vue 中实现 Toast 提示功能可以通过多种方式,以下是几种常见的实现方法: 使用第三方库 Vue 生态中有许多成熟的 Toast 库,例如 vue-toa…

vue 路由 实现

vue 路由 实现

Vue 路由实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue 路由的详细步骤: 安装 Vue Router 通过 npm 或 ya…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue 实现拖拽

vue 实现拖拽

Vue 实现拖拽功能 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性和相关事件实现拖拽功能。 <template> &l…