vue实现翻页动画效果
Vue 实现翻页动画效果的方法
使用 CSS Transition 和 Vue 过渡
在 Vue 中可以通过 <transition> 组件结合 CSS 实现翻页动画效果。定义一个过渡类名,通过 CSS 控制页面切换时的动画。
<transition name="page-flip">
<div v-if="showPage" class="page">Page Content</div>
</transition>
.page-flip-enter-active, .page-flip-leave-active {
transition: all 0.5s ease;
transform-style: preserve-3d;
}
.page-flip-enter {
transform: rotateY(-180deg);
opacity: 0;
}
.page-flip-leave-to {
transform: rotateY(180deg);
opacity: 0;
}
使用第三方动画库(如 Animate.css)
结合 Animate.css 可以快速实现翻页动画效果。安装 Animate.css 后,直接在 Vue 过渡组件中指定类名。

<transition
enter-active-class="animate__animated animate__flipInX"
leave-active-class="animate__animated animate__flipOutX"
>
<div v-if="showPage">Page Content</div>
</transition>
基于 JavaScript 钩子实现复杂动画
通过 Vue 过渡的 JavaScript 钩子,可以实现更复杂的翻页动画效果,例如结合 GSAP 库。

<transition
@before-enter="beforeEnter"
@enter="enter"
@leave="leave"
>
<div v-if="showPage">Page Content</div>
</transition>
methods: {
beforeEnter(el) {
el.style.transform = 'rotateY(90deg)';
el.style.opacity = '0';
},
enter(el, done) {
gsap.to(el, {
duration: 0.5,
rotateY: 0,
opacity: 1,
onComplete: done
});
},
leave(el, done) {
gsap.to(el, {
duration: 0.5,
rotateY: -90deg,
opacity: 0,
onComplete: done
});
}
}
使用 Vue 路由过渡实现页面切换动画
在 Vue Router 中可以通过 <router-view> 的过渡效果实现页面切换时的翻页动画。
<transition name="page-flip">
<router-view></router-view>
</transition>
.page-flip-enter-active, .page-flip-leave-active {
transition: all 0.5s ease;
}
.page-flip-enter {
transform: perspective(1000px) rotateY(90deg);
opacity: 0;
}
.page-flip-leave-to {
transform: perspective(1000px) rotateY(-90deg);
opacity: 0;
}
结合 Vue 状态管理实现多页动画
通过 Vuex 或 Pinia 管理页面状态,控制翻页动画的触发条件。
const store = new Vuex.Store({
state: {
currentPage: 1,
isAnimating: false
},
mutations: {
nextPage(state) {
state.isAnimating = true;
setTimeout(() => {
state.currentPage++;
state.isAnimating = false;
}, 500);
}
}
});
<transition @after-enter="store.commit('setAnimating', false)">
<div v-if="!store.state.isAnimating">
Page {{ store.state.currentPage }}
</div>
</transition>
以上方法可以根据实际需求选择或组合使用,实现不同的翻页动画效果。






