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

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

<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怎么实现选中删除

实现选中删除功能的方法 在Vue中实现选中删除功能通常涉及以下几个关键步骤: 数据绑定与选中状态管理 使用v-model或v-for指令绑定列表数据,结合复选框或单选按钮实现选中状态管理。例如…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…

vue实现双折线图

vue实现双折线图

实现双折线图的步骤 安装必要的依赖库(如 ECharts 或 Chart.js),这里以 ECharts 为例: npm install echarts --save 在 Vue 组件中引入 ECh…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…

vue实现弹窗

vue实现弹窗

Vue 实现弹窗的常见方法 使用组件化方式封装弹窗 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏: <template> <…

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm…