当前位置:首页 > 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实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue实现滑块

vue实现滑块

Vue 实现滑块组件的方法 使用原生 HTML 和 Vue 指令 通过 Vue 的 v-model 和事件监听实现基础滑块功能。创建一个包含 input 元素的组件,类型设置为 range,并绑定到…

实现vue框架

实现vue框架

Vue框架的基本实现 Vue是一个渐进式JavaScript框架,用于构建用户界面。以下是实现Vue框架的基本步骤: 安装Vue 通过CDN引入Vue是最简单的方式: <script src…

vue实现选人

vue实现选人

实现选人功能的基本思路 在Vue中实现选人功能通常涉及以下核心环节:数据绑定、用户交互处理、状态管理以及界面渲染。以下是具体实现方法: 数据准备与组件结构 创建包含人员信息的数组,通常从API获取或…

vue拼图实现

vue拼图实现

实现 Vue 拼图游戏的方法 使用 Vue 组件和动态数据绑定 创建一个 Vue 组件来管理拼图的状态和逻辑。通过 v-for 动态渲染拼图块,利用 v-bind 绑定样式和位置。拼图块的数据可以存储…

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…