Vue手写一个进度条

虽然现在ui框架和插件都很多,但是可能与我们需要的需求不一样,或者样式不好调,所以我们就来手写一个吧

先看一下要实现的效果

在这里插入图片描述

实际开发这些肯定都是后台传的数据对吧,进度条变化的同时,上面的数字和中间的圆点也随着动,不可能定死对吧

一.先写外面那个颜色浅的盒子

<div class="progressContainer"></div>

.progressContainer{
          margin-left: .3rem;
          margin-top: 0.9rem;
          height: .3.5rem;
          width: 6.15rem;
          border-radius: .25rem;;
          background-color: #f4f4f4;
          border: 3px solid #f4f4f4;}

二.写渐变的进度条

  <div class="progress posi-re" :style="{width:progress.agree_rate}" ref="progress">
          <div class="message posi-ab" ref="message" :style="{left:aroundwd}">
            <div class="message_pic posi-re">
          <img src="~assets/img/message.png" alt="">
            <span class="posi-ab text-white">{{progress.agree_user}}</span>
            </div>
          </div>
          <div class="around posi-ab bg-white h-100" :style="{left:progresswd}"></div>
     </div>

width:progress.agree_rate :最终转换为width:?%

原理其实就是,通过后台传的数据,来进行展示,蓝色的进度条包含整个的百分之多少,然后通过算出它离最前面的距离,然后再动态给数字和圆圈绑定style,通过定位,left=蓝色进度条移动的距离

那怎么计算蓝色进度条离最前面的距离呢?

let progresswd = this.$refs.progress.offsetWidth
这样就行了

那圆圈和文字的位置咋办?

this.progresswd = (progresswd-15)+"px"
this.aroundwd = (progresswd-38)+"px"   
因为我是为了好看,才减去了一点,你们可以不减

注:我上面写的,类似posi-ab,bg-white等都是定义的公共样式,你们需要自己写

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值