当前位置:首页 > VUE

vue实现首页骨架屏

2026-02-20 17:01:56VUE

实现骨架屏的基本思路

骨架屏(Skeleton Screen)是一种页面加载优化技术,通过在内容完全加载前展示占位图形,提升用户体验。Vue中实现骨架屏通常有以下几种方式:

使用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: #f0f0f0;
}
@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
</style>

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

该插件能自动生成骨架屏并与路由结合:

  1. 安装插件:

    vue实现首页骨架屏

    npm install vue-skeleton-webpack-plugin --save-dev
  2. 创建骨架屏组件Skeleton.vue:

    <template>
    <div class="skeleton">
     <!-- 你的骨架屏结构 -->
    </div>
    </template>
  3. 配置vue.config.js:

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

module.exports = { configureWebpack: { plugins: [ new SkeletonWebpackPlugin({ webpackConfig: { entry: { app: path.join(__dirname, './src/Skeleton.vue') } }, minimize: true, quiet: true }) ] } }

vue实现首页骨架屏


### 动态切换骨架屏和真实内容

结合v-if控制显示时机:

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

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

骨架屏动画优化

添加加载动画提升视觉效果:

.skeleton-item {
  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);
  background-size: 400% 100%;
  animation: skeleton-loading 1.4s ease infinite;
}

@keyframes skeleton-loading {
  0% { background-position: 100% 50%; }
  100% { background-position: 0 50%; }
}

响应式骨架屏设计

针对不同屏幕尺寸调整骨架屏:

@media (max-width: 768px) {
  .skeleton-item {
    height: 100px;
  }
}
@media (min-width: 769px) {
  .skeleton-item {
    height: 200px;
  }
}

与路由结合的进阶实现

在路由守卫中控制骨架屏显示:

router.beforeEach((to, from, next) => {
  store.commit('SET_LOADING', true)
  next()
})

router.afterEach(() => {
  setTimeout(() => {
    store.commit('SET_LOADING', false)
  }, 500)
})

以上方法可根据实际项目需求组合使用,关键是要确保骨架屏结构与真实页面布局一致,并在数据加载完成后平滑过渡到真实内容。

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

相关文章

vue实现拖拽首页

vue实现拖拽首页

Vue 实现拖拽首页功能 实现拖拽功能通常需要结合 Vue 的指令和第三方库,以下是几种常见的方法: 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 Vue 的…

骨架屏实现react

骨架屏实现react

骨架屏实现方法(React) 使用第三方库react-loading-skeleton 安装依赖包: npm install react-loading-skeleton 基本使用方式: im…

react骨架屏实现

react骨架屏实现

实现 React 骨架屏的常用方法 使用第三方库(如 react-loading-skeleton) 安装库:npm install react-loading-skeleton 引入并使用: i…

react实现首页下拉刷新

react实现首页下拉刷新

下拉刷新的实现方法 在React中实现首页下拉刷新功能,可以通过以下方法完成。这里介绍两种主流方案:使用原生滚动事件或第三方库。 使用原生滚动事件和状态管理 监听滚动事件,判断是否到达页面顶部并触…

css首页制作

css首页制作

CSS首页制作方法 设计布局结构 使用CSS Grid或Flexbox创建响应式布局。Grid适合复杂布局,Flexbox适合一维排列。定义容器和子元素的排列方式,确保在不同屏幕尺寸下都能正常显示…

首页css制作

首页css制作

CSS 制作首页的基本方法 使用 CSS 制作首页需要考虑布局、样式和响应式设计。以下是一些关键步骤: 布局设计 采用 Flexbox 或 Grid 布局系统创建页面结构。Flexbox 适合一维…