当前位置:首页 > VUE

vue实现骨架屏

2026-01-19 04:25:37VUE

实现骨架屏的常见方法

在Vue中实现骨架屏(Skeleton Screen)通常有以下几种方式,可根据项目需求选择合适的方法:

使用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%;
  padding: 20px;
}

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

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

使用第三方库vue-skeleton-webpack-plugin

专为Vue项目设计的骨架屏插件,可与webpack配合使用:

安装依赖:

vue实现骨架屏

npm install vue-skeleton-webpack-plugin

配置vue.config.js:

const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      new SkeletonWebpackPlugin({
        webpackConfig: {
          entry: resolve('./src/skeleton.js')
        }
      })
    ]
  }
}

创建skeleton.js入口文件:

import Vue from 'vue';
import Skeleton from './Skeleton.vue';

export default new Vue({
  components: { Skeleton },
  template: '<Skeleton />'
});

结合路由实现按需加载

在路由配置中为特定路由添加骨架屏:

vue实现骨架屏

const routes = [
  {
    path: '/product',
    component: () => ({
      component: import('./Product.vue'),
      loading: ProductSkeleton // 骨架屏组件
    })
  }
]

使用v-skeleton-loader组件

vuetify框架提供的专用组件:

<template>
  <v-skeleton-loader
    type="card"
    :loading="loading"
  ></v-skeleton-loader>
</template>

动态数据驱动的骨架屏

根据实际数据结构生成匹配的骨架屏:

computed: {
  skeletonItems() {
    return this.expectedDataStructure.map(item => ({
      height: item.type === 'image' ? '150px' : '20px',
      width: item.width || '100%'
    }))
  }
}

骨架屏的最佳实践

保持骨架屏结构与真实UI布局一致 控制动画效果避免过度闪烁 适当设置延迟避免快速切换 为移动端优化加载体验 提供无障碍访问支持

以上方法可根据项目复杂度和团队技术栈灵活选择,从简单CSS实现到完整工程化方案均可满足不同场景需求。

标签: 骨架vue
分享给朋友:

相关文章

vue实现文档

vue实现文档

Vue 实现文档的方法 在 Vue 中实现文档功能可以通过多种方式,包括使用富文本编辑器、Markdown 解析或直接渲染 HTML。以下是几种常见的实现方法。 使用富文本编辑器 富文本编辑器如…

vue点击实现排序

vue点击实现排序

实现点击排序的方法 在Vue中实现点击排序功能,可以通过以下几种方式完成: 使用计算属性结合排序方法 定义一个响应式数据存储排序状态,通过计算属性动态返回排序后的数组。点击事件切换排序状态。…

前端vue登录功能实现

前端vue登录功能实现

Vue 登录功能实现步骤 创建登录表单组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含用户名和密码输入框以及提交按钮。 <template> &l…

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed:…

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:…