当前位置:首页 > VUE

vue实现墓碑加载效果

2026-02-23 11:45:38VUE

墓碑加载效果简介

墓碑加载(Skeleton Loading)是一种在数据加载期间显示占位内容的优化技术,通过模拟内容结构提升用户体验。Vue中可通过动态样式或专用库实现。

纯CSS实现方式

通过:class绑定控制占位元素的显示/隐藏状态,结合CSS动画实现渐变效果:

<template>
  <div class="skeleton-item" v-if="loading"></div>
  <div class="real-content" v-else>{{ actualData }}</div>
</template>

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

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

使用vue-skeleton-webpack-plugin

该插件自动生成骨架屏并注入到项目入口:

vue实现墓碑加载效果

  1. 安装依赖:

    npm install vue-skeleton-webpack-plugin --save-dev
  2. 创建骨架屏组件Skeleton.vue

    vue实现墓碑加载效果

    <template>
    <div class="skeleton-block" v-for="i in 5" :key="i"></div>
    </template>
  3. vue.config.js中配置:

    const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin');
    module.exports = {
    configureWebpack: {
     plugins: [
       new SkeletonWebpackPlugin({
         webpackConfig: { entry: './src/skeleton.js' }
       })
     ]
    }
    }

动态内容适配方案

对于不规则内容区块,使用v-for生成匹配数据结构的占位元素:

<template>
  <div v-for="item in placeholderItems" :key="item.id" 
       class="skeleton-row" :style="{ width: item.width }">
  </div>
</template>

<script>
export default {
  data() {
    return {
      placeholderItems: [
        { id: 1, width: '100%' },
        { id: 2, width: '70%' }
      ]
    }
  }
}
</script>

性能优化建议

  • 为占位元素添加will-change: transform提升动画性能
  • 使用Intersection Observer实现懒加载触发
  • 对移动端设备减少动画复杂度
  • 骨架屏颜色应与实际UI色调接近

高级动画实现

通过GSAP实现更复杂的序列动画:

import { gsap } from 'gsap'
export default {
  mounted() {
    gsap.from('.skeleton-item', {
      opacity: 0.5,
      duration: 1.5,
      stagger: 0.2,
      repeat: -1,
      yoyo: true
    })
  }
}

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

相关文章

uniapp实现懒加载

uniapp实现懒加载

uniapp实现懒加载的方法 在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法: 使用uni.lazyLoad组件 uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页…

jquery加载页面

jquery加载页面

jQuery 加载页面内容的方法 使用 .load() 方法 通过 AJAX 请求加载远程数据并插入到指定元素中。适用于加载部分页面片段。 $("#targetElement").load("ext…

vue实现加载图片

vue实现加载图片

Vue 实现图片加载的方法 在 Vue 中加载图片可以通过多种方式实现,以下是一些常见的方法: 使用静态资源路径 将图片放在 public 或 assets 目录下,通过相对路径或绝对路径引用。…

vue实现分页加载

vue实现分页加载

Vue 分页加载的实现方法 基础分页实现(后端分页) 安装依赖(如使用axios): npm install axios 示例代码: <template> <div>…

vue 实现加载更多

vue 实现加载更多

Vue 实现加载更多功能 实现加载更多功能通常结合分页数据与滚动事件监听,以下是几种常见方法: 滚动监听 + 分页加载 监听滚动事件,当滚动到底部时触发加载更多数据: <template&g…

vue实现路由懒加载

vue实现路由懒加载

路由懒加载的概念 路由懒加载是一种优化技术,通过将路由对应的组件拆分成独立的代码块,仅在访问该路由时才加载对应的组件代码。这种方式可以减少初始加载时间,提升应用性能。 使用动态导入语法 在Vue R…