当前位置:首页 > 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.js 提供了多种方式实现用户交互,包括事件处理、表单绑定、动态渲染等。以下是常见的交互实现方法: 事件处理 通过 v-on 或 @ 指令绑定事件,触发方法或直接执行表达…

vue评分实现

vue评分实现

Vue 评分组件实现方法 使用第三方库(如 Element UI) 安装 Element UI: npm install element-ui 引入并注册组件: import Vue from '…

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: com…

利用vue 实现

利用vue 实现

以下是利用 Vue 实现常见功能的几种方法,分为不同场景和技术要点: 数据绑定与响应式更新 Vue 的核心特性是数据绑定,通过 v-model 实现双向绑定: <template>…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue实现增删

vue实现增删

Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是基于 Vue 2 或 Vue 3 的实现方法: 数据定义 初始化一个数组用于存储列表数据,并在 Vue 实…