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

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

相关文章

jquery加载页面

jquery加载页面

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

vue实现同步加载

vue实现同步加载

Vue 实现同步加载的方法 在 Vue 中,通常推荐使用异步加载(如 async/await 或 Promise)来优化性能,但在某些场景下可能需要同步加载。以下是几种实现同步加载的方法: 使用 c…

vue加载更多实现

vue加载更多实现

滚动监听实现加载更多 通过监听滚动事件判断是否到达底部触发加载。在组件的mounted钩子中添加滚动事件监听器,计算滚动位置与文档高度的关系。 mounted() { window.addEve…

vue实现滚动加载更多

vue实现滚动加载更多

vue实现滚动加载更多的方法 使用IntersectionObserver API 在Vue中可以通过IntersectionObserver API监听元素是否进入可视区域,触发加载更多数据。 &…

vue实现无限数据加载

vue实现无限数据加载

Vue实现无限数据加载的方法 无限数据加载(Infinite Scroll)是一种常见的前端交互模式,适用于长列表数据的动态加载。以下是几种在Vue中实现无限数据加载的方法: 使用Intersect…

vue实现视频进度加载

vue实现视频进度加载

实现视频进度加载的基本思路 在Vue中实现视频进度加载通常涉及监听视频的timeupdate事件,计算当前播放时间与总时长的比例,并更新进度条显示。核心是通过<video>元素的API和自…