我是靠谱客的博主 拉长板栗,最近开发中收集的这篇文章主要介绍vue实现button按钮进度条效果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 首先看html部分,我是通过div绘制按钮样式,并且通过自定义属性设置按钮的大小,也可以动态改变style样式,具体操作看vue官网。

<template>
  <div @click="clickBtn" class="button">
    <Icons
      v-if="isDownload == 'downloading'"
      name="Download"
      class="downloading"
    />
    <Icons
      v-else-if="isDownload == 'downloaded'"
      name="Check"
      class="downloaded"
    />
    <Icons v-else name="Bottom" class="download" />
    <span ref="text" class="text"> download </span>
    <span ref="progressRef" class="propress"></span>
  </div>
</template>

这里的icons组件是我封装的图标组件,内部实现请看我的源码地址:src/components/Icons.vue · 刘紫成/vue3-vite-template - Gitee.comhttps://gitee.com/liu--zicheng/vue3-vite-template/blob/master/src/components/Icons.vue

就是将el-icon组件进行了二次封装,下载按钮动画也在这个项目里。

这个进度条主要通过css实现的,原理:将两个相同大小的盒子,默认是盒子的右上角和第二个盒子的左下角相连如下图,然后设定过度效果以及过度的时间 。

 js部分代码

设计思路:滚动条是不会到达100%的,只有接口请求成功,才会到100%并展示成功的样式,noprogress也差不多是这样的。

let sleep = (time: number) =>
  new Promise((resolve) => setTimeout(() => resolve(1), time));

const clickBtn = async () => {
// 滚动条会滚动不到100%,会等待。
  progressRef.value.classList.add("progress-animate");
  text.value.innerText = "downloading";
  isDownload.value = "downloading";

// 模拟请求,2s后,进度条达到 100%,然后展示成功样式
  const res = await sleep(2000);
  progressRef.value.classList.add("pro-com");
  if (res == 1) {
    isDownload.value = "downloaded";
    progressRef.value.classList.add("complete-animate");
    // text.value.style.color = "#fff";
    text.value.classList.add("download-text");
    text.value.innerText = "downloaded";
  }
};

最后

以上就是拉长板栗为你收集整理的vue实现button按钮进度条效果的全部内容,希望文章能够帮你解决vue实现button按钮进度条效果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部