当前位置:首页 > VUE

vue实现页面骨框架

2026-01-23 03:15:35VUE

Vue 实现页面骨架屏的方法

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

使用 CSS 或预渲染骨架屏

通过纯 CSS 或静态 HTML 实现骨架屏,适合简单场景。在 Vue 组件的 v-if/v-else 中切换骨架屏和真实内容。

<template>
  <div v-if="loading" class="skeleton">
    <div class="skeleton-item"></div>
    <div class="skeleton-item"></div>
  </div>
  <div v-else>
    <!-- 真实内容 -->
  </div>
</template>

<style>
.skeleton {
  background: #f0f0f0;
}
.skeleton-item {
  height: 20px;
  margin: 10px 0;
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer {
  from { background-position: 200% 0; }
  to { background-position: -200% 0; }
}
</style>

使用第三方库

vue-skeleton-webpack-pluginvue-content-loader 提供更灵活的骨架屏生成方式。

vue实现页面骨框架

安装 vue-content-loader

npm install vue-content-loader

示例代码:

<template>
  <content-loader v-if="loading" :speed="2" primaryColor="#f3f3f3" secondaryColor="#ecebeb">
    <rect x="0" y="0" rx="3" ry="3" width="250" height="10" />
    <rect x="0" y="20" rx="3" ry="3" width="200" height="10" />
  </content-loader>
  <div v-else>
    <!-- 真实内容 -->
  </div>
</template>

<script>
import { ContentLoader } from 'vue-content-loader'
export default {
  components: { ContentLoader }
}
</script>

服务端渲染(SSR)集成

vue实现页面骨框架

在 Nuxt.js 等 SSR 框架中,可通过 loading 属性或自定义布局实现骨架屏。

// nuxt.config.js
export default {
  loading: {
    color: '#3B8070',
    height: '2px'
  }
}

动态数据驱动的骨架屏

根据实际内容结构动态生成骨架屏,确保占位与最终布局一致。

// 动态生成骨架屏占位数量
computed: {
  skeletonItems() {
    return Array(this.expectedItemCount).fill(0)
  }
}

实现注意事项

  • 骨架屏的样式应与真实内容布局接近,避免加载后页面跳动。
  • 动画效果(如渐变动画)能提升感知体验,但需控制性能开销。
  • 在移动端需针对不同屏幕尺寸适配骨架屏样式。
  • 对于复杂页面,可分区逐步替换骨架屏(如先头部后列表)。

标签: 框架页面
分享给朋友:

相关文章

css制作滑动页面

css制作滑动页面

使用CSS实现滑动页面 通过CSS可以实现多种滑动页面效果,包括横向滑动、纵向滑动以及视差滚动等。以下是几种常见的实现方法: 横向滑动效果 横向滑动通常用于展示一组卡片或图片,可以通过CSS的ove…

css如何制作页面模糊

css如何制作页面模糊

使用 backdrop-filter 属性 通过 backdrop-filter 属性可以直接为元素背后的区域添加模糊效果。该属性需要浏览器支持(如 Chrome、Edge、Safari)。示例代码:…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 安装html2canvas库 npm install html2canvas --save 在Vue组件中引入并使用 import html2canvas f…

h5实现登录页面跳转页面跳转页面跳转

h5实现登录页面跳转页面跳转页面跳转

使用HTML5实现登录页面跳转 在HTML5中实现登录页面跳转可以通过多种方式完成,包括表单提交、JavaScript跳转和超链接跳转。以下是几种常见的实现方法。 表单提交跳转 使用HTML表单的a…

vue页面实现日历

vue页面实现日历

实现基础日历布局 使用Vue的模板语法构建日历的基本HTML结构,通常需要包含星期标题和日期格子。月份切换按钮可以通过v-on绑定事件。 <template> <div cla…

jquery加载页面

jquery加载页面

jQuery 加载页面内容的方法 使用 .load() 方法 通过 AJAX 请求加载远程数据并插入到指定元素中。适用于加载部分页面片段。 $("#targetElement").load("ext…