微信小程序 实现进度条效果

这篇具有很好参考价值的文章主要介绍了微信小程序 实现进度条效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

微信小程序中的原生进度条组件(Progress)只能显示一种进度状态,但有时我们需要展示多种状态,比如预算已使用与本次申请的进度。为了实现这一功能,我采用了 canvas 来绘制多种状态的进度条。记录下小程序原生组件 Progress 的单状态使用,以及通过 canvas 实现多状态进度条的方法。

二、小程序Progress组件

官方文档指引👉👉:progress | 微信开放文档

2.1、使用小程序原生组件 Progress 创建一个可滚动的进度条

在页面挂载后,启动定时器,进度条从0开始,每秒增加1,直到宽度达到100,然后停止定时器。

2.2、代码实现

<template>
  <view class="progress">
    <progress :percent="deflautWidth" activeColor="#52CC52" backgroundColor="#EBEBEB" stroke-width="10" show-info />
  </view>
</template>

<script>
  export default{
    data(){
      return{
        deflautWidth:0,
        timer:null
      }
    },
    mounted(){
      let index = 0
      this.timer = setInterval(()=>{
        index+=1
        this.deflautWidth = index
        if(this.deflautWidth==100){
          clearInterval(this.timer)
        }
      },1000)
    },
  }
</script>
<style scoped>
.progress{
  padding:20rpx;
  }
</style>

属性说明:

percent:百分比       activeColor:已选择的进度条的颜色   

backgroundColor:未选择的进度条的颜色       stroke-width:进度条线的宽度

show-info:在进度条右侧显示百分比

详细属性说明可查看官方文档👉👉:progress | 微信开放文档

2.3、效果展示

微信小程序进度条,微信小程序,微信小程序,小程序

三、canvas 实现多状态进度条

3.1、需求

微信小程序中以进度条的效果展示预算中已使用与本次申请的状态,即实现多状态进度条效果;在点击进度条时显示总预算/已使用/本次申请的数据

3.2、代码实现

<template>
<view class="progress-wrapper">
  <view class="moreData" v-if="show">
    <img src="/static/delete.png" alt="" @click="show = false">
    <view class="budgetList" >
    <view>年度总预算:¥10000</view>
    <view>已使用:¥2000,20%</view>
    <view>本次申请:¥8000,80%</view>
  </view>
  </view>
  <canvas canvas-id="progressCanvas" style="width: 100%; height: 20px;" 
     @tap="showDetail"></canvas>
  <view class="budgetPage">
    <view class="budgetStatus" :style="{color:'#52CC52'}">预算状态:正常</view>
   <view class="ratio">
    <view class="cglm">(<i :style="{backgroundColor:'#52CC52'}"></i><label>已使用</label> 
    </view>
    <view class="cglm"><i :style="{backgroundColor:'#555555'}"></i><label>本次申请) 
    </label></view>
   </view>
  </view>
</view>
</template>

<script>
  export default{
    data(){
      return{
        show:false
      }
    },
    onReady: function () {
    this.drawProgress(0.2, 0.8); // 在页面准备好后绘制进度条
  },
   methods:{
    drawProgress: function (percent1, percent2) {
    const ctx = wx.createCanvasContext('progressCanvas');
    const width = 500; // 进度条总宽度
    const height = 15; // 进度条高度

    // 绘制灰色背景
    ctx.setFillStyle('#EBEBEB');
	ctx.fillRect(0, 0, width, height);

    // 绘制第一种颜色的进度
    ctx.setFillStyle('#52CC52');
    ctx.fillRect(0, 0, width * percent1, height);

    // 绘制第二种颜色的进度
    ctx.setFillStyle('#555555');
    ctx.fillRect(width * percent1, 0, width * percent2, height);

    ctx.draw();
   },
    showDetail(){
      this.show=!this.show;
    }
   }
  }
</script>

<style lang='scss' scoped>
.progress-wrapper{
  margin-top: 200rpx;
  position: relative;
}
.moreData{
  width: 100%;
  // height: 150rpx;
  background-color:#17CEA7;
  color: white;
  font-size: 24rpx;
  position: absolute; /* 使用 absolute 定位 */
  top:-110rpx;
  left: 0;
  img{
    color: #FFFEFE;
    width: 25rpx;
    height: 25rpx;
    position: absolute;
    top: 10rpx;
    right: 10rpx;
  }
  .budgetList{
    display: flex;
  flex-direction: column;
  align-items: center;
  padding: 10rpx 0;
  }
}
.budgetPage{
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 0 10rpx;
  .budgetStatus{
    font-size: 26rpx;
    color: #333333;
  }
  .ratio{
     display: flex;
      .cglm {
      display: flex;
      align-items: center;
      i {
        width: 20rpx;
        height: 20rpx;
        border-radius: 100%;
        margin: 0 10rpx;
      }

      label {
        max-width: 30vw;
        font-size: 10pt;
        font-weight: bold;
        color: #333333;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }
    }
  }
}


</style>

3.3、效果展示

微信小程序进度条,微信小程序,微信小程序,小程序微信小程序进度条,微信小程序,微信小程序,小程序

最后,👏👏 😀😀😀 👍👍   文章来源地址https://www.toymoban.com/news/detail-854448.html

到了这里,关于微信小程序 实现进度条效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序实现翻效果

    最近要在微信小程序里实现一个类似翻页的场景,网上翻看了多个案例无非就两种实现,第一种通过css 3d变换+动画实现,第二使用Turn.js现成库。前者实现效果一般,后者js库是基于古老的JQuery来实现的并没办法移植到小程序了里。 下面就自己调研了一下turnjs来实现小程序的

    2024年02月12日
    浏览(42)
  • 微信小程序——实现音乐播放器(上下切换歌曲、进度条拉动、暂停与继续播放)

    小伙伴们你们有没有想过自己搞一个播放器,播上自己喜欢的歌单,那是多么的惬意啊~ 之前,小编遇到一个项目,语音导览的播放器。其实跟播放歌单一个道理。 但是一看微信开发文档里面的音频API又是那么多,我们该如何选择呢?在这里小编选择了使用wx.createAudioContext

    2024年02月02日
    浏览(62)
  • 基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

    1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 给大家提供一些实现思路,找了一圈,一些文章基本不能直接用,错漏百出,代码还藏着掖着,希望可以帮到大家 ts的写法风格 index.tsx      index.module.less 防抖的工具函数debounce 的详细代码

    2024年02月06日
    浏览(60)
  • 微信小程序——实现手机振动效果

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:微信小程序学习分享 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:微信小程序——实

    2024年02月15日
    浏览(64)
  • 微信小程序 - - - - - 瀑布流效果实现

    对于一些小程序,关于瀑布流的需求是很正常的,瀑布流看起来确实很舒服,但是具体该如何实现呢? 下文给出的方式是: js + css 瀑布流,又称 瀑布流式布局 。 是比较流行的一种网站页面布局, 视觉表现为 参差不齐的多栏布局 ,随着页面滚动条向下滚动,这种布局还会

    2024年02月17日
    浏览(45)
  • 微信小程序搜索框吸顶效果实现

    主页要做一个搜索框,滑动主页页面的时候,搜索框始终位于导航栏下面,位置不变,不随页面的滑动而滑动,这种效果被称为”吸顶“效果。 点击搜索框,弹出上层搜索详情的视图层,搜索详情的整个页面覆盖在主页面之上,并且也覆盖住主要搜索框。 主页搜搜框设置

    2024年02月13日
    浏览(60)
  • 微信小程序组件 实现加载中效果

    大家好哇,我是梦辛工作室的灵,我又来了=-=,最近项目开发中,需实现一个加载效果,上图给大家看下: 感觉一般把,还是挺好写的,我就封装成了一个组件,方便大家以后使用,使用方法如下: 还是简单吧,原理其实也很简单,就是 n个正方形(中间一根线) 旋转 后就

    2024年02月12日
    浏览(50)
  • 微信小程序实现翻书效果

    最近要在微信小程序里实现一个类似翻页的场景,网上翻看了多个案例无非就两种实现,第一种通过css 3d变换+动画实现,第二使用Turn.js现成库。前者实现效果一般,后者js库是基于古老的JQuery来实现的并没办法移植到小程序了里。 下面就自己调研了一下turnjs来实现小程序的

    2024年02月10日
    浏览(100)
  • 微信小程序实现左边图片右边文字效果

     博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月01日
    浏览(96)
  • 【微信小程序】实现页面tab切换效果

    目录 前言 本次效果展示 一、如何实现页面tab 1.使用内置组件scroll-view 2.实现点击时出现的背景样式 3.使用scroll-into-view,实现点击时自动滚动 本次主要内容是介绍页面tab的开发,如何实现tab与页面内容联动呢?关注我就知道!   如下图所示,我们需要使用到红色框框中的属

    2024年02月09日
    浏览(111)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包