软件教程 2025年08月6日
0 收藏 0 点赞 246 浏览 1805 个字
摘要 :

文章目录 一、创建骨架占位组件 二、在页面中使用骨架占位组件 Vue项目开为了提升用户体验,我们常常会用到一些小技巧,其中骨架占位效果就是一个不错的选择。它能在数……




  • 一、创建骨架占位组件
  • 二、在页面中使用骨架占位组件

Vue项目开为了提升用户体验,我们常常会用到一些小技巧,其中骨架占位效果就是一个不错的选择。它能在数据加载时,给用户展示一个大致的页面结构,避免页面长时间空白,让用户感觉交互更加流畅。下面,我就来详细讲讲如何在Vue项目里实现这个效果。

一、创建骨架占位组件

我们先创建一个名为Skeleton.vue的组件,它就是实现骨架占位效果的核心部分。代码如下:

<template>
  <div class=\"skeleton\">
    <div class=\"skeleton-item\" v-for=\"n in count\" :key=\"n\"></div>
  </div>
</template>

<script>
export default {
  props: {
    count: {
      type: Number,
      default: 3
    }
  }
};
</script>

<style scoped>
.skeleton-item {
  height: 20px;
  margin-bottom: 10px;
  background-color: #e0e0e0;
  border-radius: 4px;
  animation: pulse 1.5s infinite ease-in-out;
}

@keyframes pulse {
  0% {
    background-color: #e0e0e0;
  }
  50% {
    background-color: #f0f0f0;
  }
  100% {
    background-color: #e0e0e0;
  }
}
</style>

在这段代码里:

  • template部分定义了组件的结构,通过v - for指令循环渲染多个.skeleton - item元素,count属性控制循环的次数,默认是3次。每个.skeleton - item就是一个代表页面内容的占位元素。
  • script部分通过props接收一个count属性,它用于指定要渲染的占位元素数量。这里指定了count的类型是数字,默认值为3 。
  • style部分定义了.skeleton - item的样式,包括高度、下边距、背景颜色、边框圆角,还通过@keyframes定义了一个名为pulse的动画。这个动画让占位元素的背景颜色在#e0e0e0#f0f0f0之间交替变化,营造出一种加载的动态效果,无限循环且动画的时长是1.5秒,缓动函数为ease - in - out

二、在页面中使用骨架占位组件

创建好组件后,我们要在页面中使用它,让其发挥作用。下面是在页面中引入该组件的代码示例:

<template>
  <div>
    <skeleton v-if=\"isLoading\" :count=\"5\" />
    <div v-else>
      <!-- 页面内容 -->
    </div>
  </div>
</template>

<script>
import Skeleton from \'~/components/Skeleton.vue\';

export default {
  components: {
    Skeleton
  },
  data() {
    return {
      isLoading: true
    };
  },
  mounted() {
    this.fetchData();
  },
  methods: {
    async fetchData() {
      // 模拟数据加载
      setTimeout(() => {
        this.isLoading = false;
      }, 2000);
    }
  }
};
</script>

在这个页面代码中:

  • 首先通过import语句引入我们刚刚创建的Skeleton组件,并在components选项中注册,这样就可以在模板中使用<skeleton>标签了。
  • data函数返回一个对象,其中isLoading属性用于控制骨架占位组件的显示与隐藏。初始时,isLoadingtrue,表示数据正在加载,此时会显示骨架占位组件。
  • mounted钩子函数在组件挂载完成后执行,这里调用了fetchData方法。
  • fetchData方法使用setTimeout模拟数据加载过程,2秒后将isLoading设置为false,此时骨架占位组件会隐藏,页面就可以展示真正的内容了。在实际项目中,这里的fetchData方法应该是发起真实的数据请求,获取数据后再隐藏骨架占位组件。

通过以上两个步骤,我们就在Vue项目中成功实现了骨架占位效果。在数据加载时,页面会显示带有动态效果的占位元素,加载完成后,这些占位元素会被实际内容替换,提升了整个项目的用户体验。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/6967.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

270
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

108
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

684
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

340
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

844
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号