当前位置:首页 > VUE

vue实现加载动画

2026-03-29 23:44:13VUE

Vue 实现加载动画的方法

使用 CSS 动画

通过 Vue 的 v-ifv-show 控制动画显示,结合 CSS 实现旋转或进度条效果:

<template>
  <div class="loading" v-show="isLoading">
    <div class="spinner"></div>
  </div>
</template>

<style>
.loading {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0,0,0,0.5);
  display: flex;
  justify-content: center;
  align-items: center;
}
.spinner {
  width: 50px;
  height: 50px;
  border: 5px solid #f3f3f3;
  border-top: 5px solid #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}
@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
</style>

使用第三方库(如 Vuetify)

Vuetify 提供预置的加载组件:

<template>
  <v-progress-circular
    indeterminate
    color="primary"
    v-if="loading"
  ></v-progress-circular>
</template>

<script>
import { VProgressCircular } from 'vuetify/lib'
export default {
  components: { VProgressCircular },
  data: () => ({ loading: true })
}
</script>

动态路由加载动画

在 Vue Router 的全局守卫中添加加载状态:

router.beforeEach((to, from, next) => {
  store.commit('SET_LOADING', true)
  next()
})

router.afterEach(() => {
  setTimeout(() => store.commit('SET_LOADING', false), 500)
})

骨架屏技术

数据加载前显示占位图形:

<template>
  <div v-if="loading" class="skeleton">
    <div class="skeleton-line"></div>
    <div class="skeleton-line"></div>
  </div>
  <div v-else>实际内容</div>
</template>

<style>
.skeleton-line {
  height: 20px;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
  to { background-position: -200% 0; }
}
</style>

按需加载动画

通过动态导入显示加载状态:

vue实现加载动画

const AsyncComponent = () => ({
  component: import('./Component.vue'),
  loading: LoadingComponent,
  error: ErrorComponent,
  delay: 200,
  timeout: 3000
})

注意事项

  • 动画持续时间建议控制在 300-1000ms 之间
  • 移动端需考虑性能影响,避免复杂动画
  • 提供无障碍支持,添加 ARIA 属性
  • 全局加载状态建议使用 Vuex 管理
  • 网络请求可结合 axios 拦截器控制显示

标签: 加载动画
分享给朋友:

相关文章

vue实现gif动画

vue实现gif动画

在Vue中实现GIF动画 使用<img>标签直接引入GIF文件 在Vue组件中,可以直接通过<img>标签引入GIF文件。确保GIF文件已放置在项目的静态资源目录(如publ…

vue 实现滚动加载

vue 实现滚动加载

Vue 实现滚动加载的方法 滚动加载(Infinite Scroll)是常见的前端功能,通过监听滚动事件动态加载数据。以下是Vue中实现滚动加载的几种方案: 使用原生滚动事件监听 通过监听窗口或容器…

vue实现 懒加载

vue实现 懒加载

懒加载的实现方式 在Vue中实现懒加载可以通过多种方式,常见的包括路由懒加载和组件懒加载。以下是具体实现方法: 路由懒加载 路由懒加载是通过动态导入组件的方式实现的,适用于Vue Router的路由…

vue 实现懒加载

vue 实现懒加载

vue 实现懒加载的方法 在Vue中实现懒加载可以通过多种方式完成,以下是几种常见的方法: 使用Vue Router的懒加载 Vue Router支持动态导入组件,从而实现路由级别的懒加载。这种方式…

vue实现加载更多

vue实现加载更多

Vue 实现加载更多功能 在 Vue 中实现加载更多功能通常涉及监听滚动事件或点击按钮触发加载更多数据。以下是几种常见的实现方式: 滚动监听实现无限滚动 通过监听滚动事件,当用户滚动到页面底部时自动…

vue过渡动画实现

vue过渡动画实现

Vue 过渡动画实现方法 使用 <transition> 组件 Vue 提供了内置的 <transition> 组件,用于在元素插入、更新或移除时应用过渡效果。通过添加 CSS…