当前位置:首页 > VUE

vue实现加载动画

2026-02-17 23:20:30VUE

使用 CSS 动画实现加载动画

在 Vue 中可以通过 CSS 动画实现简单的加载效果。定义一个旋转的圆圈动画:

<template>
  <div class="loading-spinner"></div>
</template>

<style>
.loading-spinner {
  width: 40px;
  height: 40px;
  border: 4px solid #f3f3f3;
  border-top: 4px solid #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
</style>

使用第三方库实现复杂动画

Vue 可以集成第三方动画库如 animate.csslottie-web 实现更丰富的加载效果。以 animate.css 为例:

<template>
  <div class="animate__animated animate__bounce animate__infinite">
    Loading...
  </div>
</template>

<script>
import 'animate.css'
</script>

条件渲染加载动画

结合 Vue 的 v-ifv-show 指令,在数据加载时显示动画:

<template>
  <div>
    <div v-if="isLoading" class="loading-spinner"></div>
    <div v-else>
      <!-- 加载完成后的内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isLoading: true
    }
  },
  mounted() {
    setTimeout(() => {
      this.isLoading = false
    }, 2000)
  }
}
</script>

使用 Vue 过渡效果

Vue 的 <transition> 组件可以为加载动画添加过渡效果:

<template>
  <transition name="fade">
    <div v-if="isLoading" class="loading-spinner"></div>
  </transition>
</template>

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

组件化加载动画

将加载动画封装为可复用组件:

<!-- LoadingSpinner.vue -->
<template>
  <div class="loading-spinner">
    <div class="dot"></div>
    <div class="dot"></div>
    <div class="dot"></div>
  </div>
</template>

<style>
.loading-spinner {
  display: flex;
  justify-content: center;
  gap: 8px;
}

.dot {
  width: 12px;
  height: 12px;
  background-color: #3498db;
  border-radius: 50%;
  animation: bounce 1.4s infinite ease-in-out;
}

.dot:nth-child(2) {
  animation-delay: 0.2s;
}

.dot:nth-child(3) {
  animation-delay: 0.4s;
}

@keyframes bounce {
  0%, 80%, 100% { transform: scale(0); }
  40% { transform: scale(1); }
}
</style>

骨架屏加载效果

实现内容加载前的骨架屏效果:

vue实现加载动画

<template>
  <div class="skeleton-container">
    <div v-if="isLoading" class="skeleton">
      <div class="skeleton-header"></div>
      <div class="skeleton-line"></div>
      <div class="skeleton-line"></div>
    </div>
    <div v-else>
      <!-- 实际内容 -->
    </div>
  </div>
</template>

<style>
.skeleton {
  width: 100%;
  padding: 20px;
}

.skeleton-header {
  height: 40px;
  background-color: #e0e0e0;
  margin-bottom: 20px;
  border-radius: 4px;
}

.skeleton-line {
  height: 20px;
  background-color: #e0e0e0;
  margin-bottom: 10px;
  border-radius: 4px;
}
</style>

以上方法可以根据实际需求选择或组合使用,实现不同风格的加载动画效果。

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

相关文章

vue点击实现动画

vue点击实现动画

Vue 中实现点击动画的方法 使用 Vue 过渡(Transition)组件 Vue 提供了内置的 <transition> 组件,可以轻松实现元素进入/离开的动画效果。结合 v-if 或…

css3动画在线制作

css3动画在线制作

CSS3 动画在线制作工具 以下是一些常用的在线工具和平台,可以帮助快速生成 CSS3 动画代码,无需手动编写: Animista 网址:https://animista.net/ 特点:提供预设的…

vue动画实现原理

vue动画实现原理

Vue动画实现原理 Vue的动画系统基于CSS过渡和动画,结合Vue的响应式系统,提供声明式的方式管理元素进入/离开的动画效果。核心原理分为以下几个部分: 过渡类名自动应用 Vue在元素插入…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…

react如何加载网页

react如何加载网页

使用 React 加载网页的方法 通过 iframe 嵌入网页 在 React 组件中,可以通过 iframe 标签直接加载外部网页。这种方式简单直接,适合嵌入第三方页面或静态内容。 import…

css3动画制作工具

css3动画制作工具

CSS3 动画制作工具推荐 以下是几款流行的工具和资源,可帮助快速创建CSS3动画,涵盖可视化工具、代码生成器和学习平台。 可视化工具 1. Animate.css 提供预定义的CSS动画…