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

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

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

相关文章

css制作腾讯首页

css制作腾讯首页

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

骨架屏实现react

骨架屏实现react

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

css制作京东首页

css制作京东首页

CSS制作京东首页的关键步骤 京东首页是一个复杂的电商平台页面,包含导航栏、轮播图、商品分类、推荐商品等多个模块。使用CSS实现时需注意布局、响应式设计和交互效果。 整体布局结构 京东首页采用经典的…

uniapp首页轮播图

uniapp首页轮播图

uniapp首页轮播图实现方法 使用uni-swiper组件 uniapp内置了uni-swiper组件,可以快速实现轮播图效果。在pages/index/index.vue文件中添加以下代码: &…

vue首页实现

vue首页实现

实现Vue首页的基本步骤 创建一个Vue首页通常需要设置路由、组件和基本布局。以下是实现Vue首页的常见方法: 安装Vue CLI并初始化项目 使用Vue CLI快速搭建项目结构,确保已安装Node…

vue实现首页

vue实现首页

Vue 实现首页的基本步骤 使用 Vue.js 实现首页通常涉及项目初始化、页面结构设计、组件开发和路由配置等关键步骤。以下是详细实现方法: 初始化 Vue 项目 通过 Vue CLI 或 Vite…