Bootstrap

Vue3如何实现页面加载时动画效果

在 Vue3 的 TypeScript 文件中,可以使用 <Transition> 组件来实现页面加载动画。你可以在 <template> 中定义一个元素,并在该元素上使用 v-enter 和 v-leave 插槽,来定义元素进入和离开视图时的动画效果。

以下是一个简单的示例:

<template>
  <div id="app">
    <transition name="fade">
      <div v-if="isLoading">
        <h1>加载中...</h1>
      </div>
      <div v-else>
        <h1>欢迎来到 Vue3 的世界!</h1>
      </div>
    </transition>
  </div>
</template>

<script>
import { defineComponent } from 'vue'

export default defineComponent({
  name: 'App',
  data() {
    return {
      isLoading: true
    }
  },
  created() {
    setTimeout(() => {
      this.isLoading = false
    }, 3000) // 模拟页面加载完成的时间
  }
})
</script>

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

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

在这个示例中,我们使用了 fade 作为过渡名称,并定义了一个简单的淡入淡出动画。当页面加载时,isLoading 为 true,所以显示 "加载中..." 的元素会逐渐淡入。当页面加载完成后,isLoading 为 false,所以显示 "欢迎来到 Vue3 的世界!" 的元素会逐渐淡出。

你可以根据需要修改动画的效果和时长。请注意,由于 <Transition> 是一个响应式组件,所以你需要在 <template> 中使用 v-if 或 v-else-if 来控制元素的显示,以确保动画能够正确触发。

;