前言
在uniapp开发小程序或者apk时,页面需要用到一个圆形进度条(带文字和百分比的),自己也自定义过一个,但是有一点小问题,咱先展示如何引入插件市场的在介绍自定义的!一共四种,但是你需要考虑自己的兼容性!
正文
一、插件市场
1.进入DCloud插件市场:DCloud 插件市场
2.找到了一款和自己需求符合的,兼容性也是比较好的,做uniapp项目是需要考虑和测试兼容性的,只有真机上能看的出来,模拟器不一定看的出来!!!圆形进度条
3.下载插件并导入HBuilderX
4.点击之后需要登录账号密码,然后导入到你uniapp中的uni_modules文件夹下,这个文件夹下面不需要引入页面在引入了。
5.页面中使用组件:
<l-circularProgress :fontShow="false" bgColor="#f2f2f2" :lineWidth="10" boxWidth="90" boxHeight="90" progressColor="#7ef22e":percent="80" style="position: relative;"><view class="centerTxtSpecial" style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);"><view class="numSpecial">80%</view><view class="txtSpecial">性能</view></view>
</l-circularProgress>
css代码
.centerTxtSpecial {position: absolute;top: 50%;left: 47%;transform: translate(-50%, -50%);text-align: center;
}.numSpecial {font-size: 30rpx;font-family: Arial;/* font-weight: bold; */color: #008000;
}.txtSpecial {font-size: 28rpx;font-family: PingFang SC;font-weight: 400;color: #999;margin-top: 8rpx;
}
6、效果如下
二、自定义组件:
1.html代码
<div v-for="(item,index) in dataList" :key="index" class="setBorder" @click="handledetail(item)">/**主要内容*/<view class="circlecontent"><view class="circleprogress"><view class="progresstext">{{item.percent}}%<text style="font-size: 12px; width: 100%;">性能</text></view><view class="wrapper"><view class="leftprogress" :style="{ transform: 'rotate('+(item.percent * 3.6 <= 180 ? -45 : -45+(item.percent * 3.6-180))+'deg)'}"></view></view><view class="wrapper"><view class="rightprogress" :style="{ transform: 'rotate('+(item.percent * 3.6 <= 180 ? 45 + item.percent * 3.6 : 45+180)+'deg)'}"></view></view></view></view>
</div>
2.js代码
leftprogress: 'rotate(-45deg)',
rightprogress: 'rotate(45deg)',
dataList: []
3.css代码
.circlecontent {width: 80px;display: flex;justify-content: center;flex-flow: wrap;align-items: center;border-radius: 50%;text-align: center;height: 80px;position: relative;
}.circleprogress {width: 80px;height: 80px;display: flex;justify-content: center;
}.circleprogress .progresstext {position: absolute;font-size: 12px;width: 50px;display: flex;justify-content: center;align-items: center;color: #008000;flex-wrap: wrap;top: 45%;left: 15%;transform: translateY(-50%);
}.circleprogress .wrapper {width: 80px;height: 80px;overflow: hidden;
}.circleprogress .leftprogress,
.rightprogress {width: 70px;height: 70px;border: 10px solid #eee;border-bottom: 10px solid #7ef22e;border-radius: 50%;
}.circleprogress .leftprogress {border-right: 10px solid #7ef22e;
}.circleprogress .rightprogress {border-left: 10px solid #7ef22e;margin-left: -40px;
}
4.效果:
这个兼容性都没问题,但是有个缺角!
三、第三方自定义组件:
uniapp圆环进度条组件_环形进度条组件-CSDN博客
问题:canvas层级高,目前覆盖文字信息没有展示!只有环形展示出来了!
四、uview官方组件
1.html
<u-circle-progress active-color="#7ef22e" :percent="item.percent"><view class="centerTxtSpecial"><div class="numSpecial">{{item.percent}}%</div><text class='txtSpecial'>性能</text></view>
</u-circle-progress>
2.js引入组件
看你自己文件位置,不能完全copy
import uCircleProgressVue from "../../../components/owner/u-circle-progress.vue";
export default {components: {'u-circle-progress': uCircleProgressVue}
}
3.这个官方的在安卓手机上apk无法正常显示,小程序都是ok的!
总结
个人是很推荐和支持第一种的,canvas绘制图形很丝滑,但是也有层级很高的问题!原生虽然兼容性很好,但是可能并没有那么流程!你也可以尝试自己做好用的组件出来!