当前位置:首页 > VUE

vue骨架屏技术实现

2026-02-24 15:43:10VUE

vue骨架屏技术实现

骨架屏(Skeleton Screen)是一种优化用户体验的技术,在页面加载时展示占位内容,避免白屏或闪烁问题。以下是Vue中实现骨架屏的几种方法:

使用第三方库

vue-skeleton-webpack-plugin是一个常用插件,通过Webpack在构建时生成骨架屏。安装后配置vue.config.js

vue骨架屏技术实现

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 />'
});

手动编写组件

创建一个.vue文件定义骨架屏结构,使用CSS控制样式:

vue骨架屏技术实现

<template>
  <div class="skeleton">
    <div class="skeleton-header"></div>
    <div class="skeleton-body">
      <div class="skeleton-item" v-for="i in 4" :key="i"></div>
    </div>
  </div>
</template>

<style>
.skeleton {
  background: #fff;
}
.skeleton-item {
  height: 20px;
  background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 50%, #f2f2f2 75%);
  background-size: 400% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
  0% { background-position: 100% 50%; }
  100% { background-position: 0 50%; }
}
</style>

条件渲染控制

在主组件中通过v-if切换真实内容和骨架屏:

<template>
  <div>
    <real-content v-if="!loading" />
    <skeleton-screen v-else />
  </div>
</template>

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

SSR场景下的实现

对于Nuxt.js项目,可在布局文件中动态注入骨架屏:

// layouts/default.vue
export default {
  data() {
    return { isHydrating: true }
  },
  mounted() {
    this.isHydrating = false;
  }
}
<template>
  <div>
    <client-only>
      <real-content v-if="!isHydrating" />
      <skeleton-placeholder v-else />
    </client-only>
  </div>
</template>

关键实现要点

  • 动画效果使用CSS渐变实现加载中的闪烁效果
  • 骨架屏结构应尽量匹配真实DOM的尺寸和布局
  • 对于动态内容区域,可以使用v-for生成重复占位元素
  • 在移动端需注意适配不同屏幕尺寸

以上方法可根据项目需求选择单独使用或组合实现。第三方库适合快速集成,手动编写则更灵活可控。

标签: 骨架技术
分享给朋友:

相关文章

vue实现骨架屏

vue实现骨架屏

实现骨架屏的常见方法 在Vue中实现骨架屏(Skeleton Screen)通常有以下几种方式,可根据项目需求选择合适的方法: 使用CSS实现基础骨架屏 通过纯CSS编写骨架屏的样式,适用于简单场景…

骨架屏实现原理vue

骨架屏实现原理vue

骨架屏实现原理 骨架屏(Skeleton Screen)是一种优化用户体验的技术,在页面内容加载完成前显示一个灰色占位图,模拟页面的大致结构,让用户感知到内容即将加载。在Vue中实现骨架屏的核心原理是…

骨架屏实现react

骨架屏实现react

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

react实现骨架屏

react实现骨架屏

实现骨架屏的常见方法 在React中实现骨架屏(Skeleton Screen)通常有以下几种方式,每种方法适用于不同场景: 使用CSS纯样式实现 通过CSS直接模拟骨架屏的灰色占位块,适合简单布局…

php技术实现

php技术实现

PHP 技术实现指南 PHP 是一种广泛使用的服务器端脚本语言,适用于 Web 开发。以下是一些常见的 PHP 技术实现方法和示例。 基础语法与变量 PHP 代码通常嵌入在 HTML 中,以 <…

uniapp产品技术

uniapp产品技术

uniapp 产品技术概述 uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发多端部署,包括 iOS、Android、H5、微信小程序、支付宝小程序等。其核心目标是提升开发效率,降…