当前位置:首页 > 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

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

  1. 安装依赖:

    npm install vue-skeleton-webpack-plugin --save-dev
  2. 创建骨架屏组件Skeleton.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
    })
  }
}

vue实现墓碑加载效果

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

相关文章

vue实现预加载

vue实现预加载

Vue 实现预加载的方法 预加载可以显著提升用户体验,减少页面切换时的等待时间。以下是几种在 Vue 中实现预加载的常见方法: 使用 preload 或 prefetch 标签 在构建工具(如 We…

react如何延迟加载

react如何延迟加载

延迟加载的实现方法 在React中实现延迟加载(Lazy Loading)通常指按需加载组件或资源,以提升初始页面加载性能。以下是几种常见方法: 使用React.lazy和Suspense Reac…

vue 实现滚动加载

vue 实现滚动加载

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

vue 实现加载更多

vue 实现加载更多

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

vue实现加载更多

vue实现加载更多

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

vue懒加载实现方案

vue懒加载实现方案

vue懒加载实现方案 路由懒加载 使用动态导入语法实现路由级别的懒加载,适用于Vue Router配置。通过import()函数返回Promise,Webpack会自动分割代码块。 const ro…