当前位置:首页 > 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. 安装插件:

    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 }) ] } }


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

结合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;
  }
}

与路由结合的进阶实现

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

vue实现首页骨架屏

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

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

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

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

相关文章

vue首页实现ssr

vue首页实现ssr

Vue 首页实现 SSR(服务端渲染) SSR(Server-Side Rendering) 是一种在服务器端生成 HTML 并将其发送到客户端的技术,可以提升首屏加载速度和 SEO 优化。以下是实现…

vue实现拖拽首页

vue实现拖拽首页

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

vue骨架屏怎么实现

vue骨架屏怎么实现

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

css制作腾讯首页

css制作腾讯首页

布局结构分析 腾讯首页采用经典的顶部导航+主体内容+底部信息的结构。顶部包含Logo、导航栏和登录入口,主体分为新闻资讯、视频、广告位等模块,底部为版权信息和链接。 基础HTML结构 <!DO…

php首页实现

php首页实现

PHP首页实现方法 基础首页结构 创建一个名为index.php的文件,作为网站入口。基础结构需包含HTML骨架和PHP动态内容: <!DOCTYPE html> <html>…

uniapp登录首页

uniapp登录首页

uniapp 登录首页实现方法 页面结构设计 在 pages 目录下创建登录页面(如 login.vue),使用 uni-app 基础组件构建表单: <template> <v…