当前位置:首页 > VUE

vue实现墓碑加载效果

2026-01-22 20:58:40VUE

Vue 实现墓碑加载效果

墓碑加载效果(Skeleton Loading)是一种在数据加载期间显示的占位符 UI,用于提升用户体验。以下是几种实现方法:

使用纯 CSS 实现

通过 CSS 动画和样式创建简单的墓碑效果:

<template>
  <div class="skeleton-container">
    <div class="skeleton-item" v-for="i in 5" :key="i"></div>
  </div>
</template>

<style>
.skeleton-container {
  width: 100%;
}

.skeleton-item {
  height: 60px;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
  margin-bottom: 10px;
  border-radius: 4px;
}

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
</style>

使用第三方库

vue-skeleton-loader 是一个专门用于实现墓碑效果的库:

npm install vue-skeleton-loader
<template>
  <skeleton-loader
    v-if="loading"
    :width="300"
    :height="200"
    :animation="'wave'"
  />
</template>

<script>
import SkeletonLoader from 'vue-skeleton-loader';

export default {
  components: { SkeletonLoader },
  data() {
    return {
      loading: true
    }
  }
}
</script>

动态切换内容与墓碑

在真实数据加载完成后切换显示:

<template>
  <div>
    <div v-if="loading" class="skeleton-content">
      <!-- 墓碑占位符 -->
    </div>
    <div v-else>
      <!-- 真实内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: true,
      data: null
    }
  },
  async created() {
    this.data = await fetchData();
    this.loading = false;
  }
}
</script>

组件化墓碑

创建可复用的墓碑组件:

<!-- Skeleton.vue -->
<template>
  <div class="skeleton">
    <div class="skeleton-header"></div>
    <div class="skeleton-body"></div>
  </div>
</template>

<style>
.skeleton {
  /* 样式定义 */
}
</style>
<template>
  <div>
    <Skeleton v-if="loading" />
    <Content v-else :data="data" />
  </div>
</template>

复杂布局墓碑

对于复杂布局,可以创建匹配实际 UI 结构的墓碑:

<template>
  <div class="card-skeleton">
    <div class="image-placeholder"></div>
    <div class="content">
      <div class="title-line"></div>
      <div class="text-line"></div>
      <div class="text-line shorter"></div>
    </div>
  </div>
</template>

<style>
.card-skeleton {
  /* 匹配实际卡片样式 */
}
</style>

性能优化

避免不必要的 DOM 操作:

// 使用 v-show 替代 v-if 减少 DOM 操作
<template>
  <div>
    <div v-show="loading" class="skeleton"></div>
    <div v-show="!loading" class="content"></div>
  </div>
</template>

响应式墓碑

根据屏幕尺寸调整墓碑样式:

vue实现墓碑加载效果

@media (max-width: 768px) {
  .skeleton-item {
    height: 40px;
  }
}

以上方法可以根据实际需求组合使用,创建适合不同场景的墓碑加载效果。

标签: 墓碑加载
分享给朋友:

相关文章

vue实现 懒加载

vue实现 懒加载

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

vue实现延迟加载

vue实现延迟加载

Vue 实现延迟加载的方法 使用动态导入(Dynamic Import)和异步组件 在 Vue 中,可以通过动态导入语法结合异步组件实现延迟加载。这种方式会在需要时才加载组件,而不是在初始加载时一并加…

vue实现页面懒加载

vue实现页面懒加载

Vue 实现页面懒加载的方法 在 Vue 中实现页面懒加载可以通过路由懒加载和组件懒加载两种方式实现,以下是具体方法: 路由懒加载 路由懒加载是通过动态导入组件的方式实现,仅在访问对应路由时才加载相…

vue怎么实现加载速度

vue怎么实现加载速度

优化 Vue 项目的加载速度 代码分割与懒加载 使用动态导入(import())实现路由懒加载和组件懒加载。在路由配置中,将组件改为函数形式动态加载: const Home = () => i…

vue实现通用页面加载

vue实现通用页面加载

Vue 实现通用页面加载的方法 在 Vue 中实现通用页面加载功能,可以通过多种方式实现,包括使用全局加载状态、自定义指令或封装组件。以下是几种常见的方法: 使用全局状态管理 通过 Vuex 或 P…

vue实现懒加载原理

vue实现懒加载原理

Vue 懒加载的实现原理 Vue 中的懒加载(Lazy Loading)通常用于延迟加载组件、路由或图片等资源,从而提升页面初始加载性能。以下是几种常见的懒加载实现方式及其原理: 组件懒加载 通过动…