当前位置:首页 > VUE

vue骨架屏怎么实现

2026-01-20 21:56:33VUE

Vue 骨架屏的实现方法

骨架屏(Skeleton Screen)是一种优化用户体验的加载状态展示方式,通过在内容加载前显示页面的大致结构,减少用户等待的焦虑感。以下是几种常见的实现方法:

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

安装依赖:

npm install vue-skeleton-webpack-plugin --save-dev

配置 vue.config.js

vue骨架屏怎么实现

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

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

创建骨架屏入口文件 skeleton.js

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

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

编写骨架屏组件 Skeleton.vue

vue骨架屏怎么实现

<template>
  <div class="skeleton">
    <!-- 骨架屏结构示例 -->
    <div class="skeleton-header"></div>
    <div class="skeleton-body">
      <div class="skeleton-line" v-for="i in 5" :key="i"></div>
    </div>
  </div>
</template>

<style>
.skeleton {
  /* 骨架屏样式 */
}
</style>

手动实现动态切换

在组件中通过 v-if 控制骨架屏与真实内容的切换:

<template>
  <div>
    <div v-if="loading" class="skeleton">
      <!-- 骨架屏结构 -->
    </div>
    <div v-else>
      <!-- 真实内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return { loading: true };
  },
  mounted() {
    setTimeout(() => {
      this.loading = false;
    }, 2000);
  }
};
</script>

基于 CSS 动画的骨架屏

通过 CSS 实现动态效果:

.skeleton-item {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

结合路由的全局骨架屏

在根组件或布局组件中统一管理:

<template>
  <div id="app">
    <router-view v-if="!loading" />
    <global-skeleton v-else />
  </div>
</template>

注意事项

  • 骨架屏的结构应尽量与实际内容布局一致,避免页面跳动。
  • 动画效果不宜过于复杂,以免影响性能。
  • 对于动态内容(如列表),可以使用 v-for 生成多个骨架块。
  • 在移动端注意适配不同屏幕尺寸。

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

相关文章

vue实现点击

vue实现点击

实现点击事件的基本方法 在Vue中实现点击事件可以通过v-on指令或@简写方式绑定。以下是常见的点击事件绑定方法: <template> <button v-on:click=…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue实现引导

vue实现引导

Vue 实现引导功能的方法 使用第三方库 推荐使用 driver.js 或 intro.js 这类专门为 Vue 设计的引导库。这些库提供了完整的 API 和样式,能够快速实现引导功能。 安装 dr…

vue mvvm实现

vue mvvm实现

Vue MVVM 实现原理 Vue.js 是一个基于 MVVM(Model-View-ViewModel)模式的框架,其核心是通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 M…

vue 实现搜索

vue 实现搜索

实现 Vue 搜索功能 在 Vue 中实现搜索功能通常涉及以下几个关键步骤: 数据绑定与输入监听 使用 v-model 双向绑定搜索输入框的值,监听用户输入: <template>…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…