当前位置:首页 > 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生成重复占位元素
  • 在移动端需注意适配不同屏幕尺寸

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

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

相关文章

elementui技术

elementui技术

ElementUI 技术简介 ElementUI 是一套基于 Vue.js 的桌面端组件库,由饿了么前端团队开发并维护。它提供了丰富的 UI 组件(如表格、表单、弹窗等),遵循简洁的设计风格,适合快速…

uniapp选型技术

uniapp选型技术

uniapp选型技术的关键考量因素 跨平台兼容性 uniapp的核心优势在于一次开发可同时发布到iOS、Android、Web及小程序等多个平台。选型时需确认目标平台覆盖范围,例如若需兼容快应用等特定…

vue前端实现骨架屏

vue前端实现骨架屏

骨架屏的实现方法 骨架屏(Skeleton Screen)是一种在页面加载时展示的占位符效果,能够提升用户体验。以下是几种在Vue中实现骨架屏的方法: 使用CSS实现基础骨架屏 通过纯CSS可以快速…

php技术实现

php技术实现

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

php弹幕实现技术

php弹幕实现技术

PHP弹幕实现技术 弹幕功能的实现通常需要结合前端和后端技术,PHP作为后端语言主要负责数据处理和存储。以下是基于PHP的弹幕实现方案: 数据库设计 创建弹幕数据表,字段通常包括: id:自增主键…

js技术实现

js技术实现

JavaScript 技术实现方法 JavaScript 是一种广泛应用于网页开发和后端开发的编程语言,具有丰富的技术实现方式。以下是几种常见的 JavaScript 技术实现方法。 前端开发 使用…