当前位置:首页 > VUE

vue实现首页骨架屏

2026-01-20 00:59:22VUE

Vue 实现首页骨架屏的方法

骨架屏(Skeleton Screen)是一种提升用户体验的加载效果,通过在内容加载前展示页面布局的占位图,减少用户等待的焦虑感。以下是几种常见的实现方式:

使用 CSS 实现基础骨架屏

通过纯 CSS 可以快速实现简单的骨架效果,适合静态布局的页面。

<template>
  <div class="skeleton-container">
    <div class="skeleton-header"></div>
    <div class="skeleton-content"></div>
    <div class="skeleton-footer"></div>
  </div>
</template>

<style>
.skeleton-container {
  width: 100%;
}
.skeleton-header {
  height: 60px;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
.skeleton-content {
  height: 300px;
  margin: 20px 0;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
  from { background-position: 200% 0; }
  to { background-position: -200% 0; }
}
</style>

基于 Vue 的动态骨架屏组件

通过封装可复用的 Vue 组件,动态适配不同内容的骨架效果。

<template>
  <div v-if="loading" class="skeleton-wrapper">
    <div v-for="i in count" :key="i" class="skeleton-item" :style="{ width, height }"></div>
  </div>
  <div v-else>
    <!-- 实际内容 -->
  </div>
</template>

<script>
export default {
  props: {
    loading: Boolean,
    count: { type: Number, default: 1 },
    width: { type: String, default: '100%' },
    height: { type: String, default: '20px' }
  }
}
</script>

结合第三方库 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: require.resolve('./src/skeleton.js')
        }
      })
    ]
  }
}

创建 skeleton.js 入口文件:

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

骨架屏的最佳实践

  • 保持骨架屏结构与真实布局一致,避免页面跳动
  • 使用渐变动画(shimmer effect)增强加载感知
  • 对图片、卡片等不同内容使用差异化占位样式
  • 在 Vue Router 的导航守卫中控制骨架屏显示时机
  • 对于 SSR 项目,考虑将骨架屏直接内联到 HTML 中

通过以上方法可以实现从简单到复杂的骨架屏效果,显著提升页面加载体验。实际项目中可根据需求选择合适方案,或组合多种技术实现最佳效果。

vue实现首页骨架屏

标签: 骨架首页
分享给朋友:

相关文章

css制作腾讯首页

css制作腾讯首页

腾讯首页CSS实现要点 腾讯首页作为大型门户网站,其CSS布局需兼顾响应式、高性能和多模块适配。以下是关键实现步骤: 整体布局结构 使用flexbox或grid实现整体框架,顶部导航固定定位:…

vue首页实现

vue首页实现

Vue首页实现方法 创建Vue项目 使用Vue CLI创建新项目,运行命令: vue create my-project 选择默认配置或手动配置项目特性。 设计首页路由 在src/router/i…

vue系统首页实现

vue系统首页实现

Vue 系统首页实现方法 创建基础项目结构 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖如 vue-router、axios、element-ui 等。项目目录应包含 componen…

vue骨架屏实现

vue骨架屏实现

vue骨架屏实现方法 骨架屏(Skeleton Screen)是一种优化用户体验的技术,在页面数据加载前展示页面的大致结构,避免白屏或闪烁问题。以下是几种常见的实现方式: 使用CSS实现基础骨架屏…

vue商城首页实现

vue商城首页实现

Vue 商城首页实现步骤 项目初始化 使用 Vue CLI 创建项目,安装必要依赖(如 Vue Router、Vuex、Axios 等)。确保项目结构清晰,划分组件目录、路由配置目录等。 vue…

vue实现首页动画

vue实现首页动画

Vue 实现首页动画的方法 在 Vue 中实现首页动画可以通过多种方式,包括使用 CSS 动画、Vue 过渡效果、第三方动画库等。以下是一些常见的实现方法。 使用 CSS 动画 通过 Vue 的 v…