圆环百分比进度

本文详细介绍使用CSS的clip属性和transform属性制作动态圆环进度条的方法,通过精确控制旋转角度和宽度变化,实现从0%到100%的平滑过渡效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           

.circle-progress-con{position: relative;margin: 0 auto;text-align: center;line-height: calc(196px - 16px);background-color: rgba(0, 0, 0, 0.6);border: 16px solid rgba(112, 112, 112, 0.5);color: #fff;font-size: 30px;}
.circle, .percent{position: absolute;}
.circle-progress-con, .circle, .percent{width: 196px;height: 196px;border-radius: 50%;box-sizing: border-box;}
.circle{top: -16px;left: -16px;clip:rect(0, 196px, 196px, calc(196px / 2));}
.clip-auto{clip: auto;/*clip:rect(auto, auto, auto, auto);*/}
.percent{border: 16px solid #ffdd00;}
.left{transition:transform ease;clip: rect(0, calc(196px / 2), 196px, 0);}
.right{clip:rect(0, 196px, 196px, calc(196px / 2));}
.wth0{width:0;}
<div class="circle-progress-con">
  <div class="circle">
    <div class="percent left"></div>
    <div class="percent right wth0"></div>
  </div>
  <div class="num"><span>0</span>%</div>
</div> 
var percent=0;
var loading=setInterval(function(){
  if(percent>100){
    percent=0;
    $('.circle').removeClass('clip-auto');
    $('.right').addClass('wth0');
  }else if(percent>50){
    $('.circle').addClass('clip-auto');
    $('.right').removeClass('wth0');
  }
  $('.left').css({'transform': 'rotate('+ (18/5)*percent +'deg)', '-webkit-transform': 'rotate('+ (18/5)*percent +'deg)', '-moz-transform': 'rotate('+ (18/5)*percent +'deg)'});
  $('.num>span').text(percent);
  percent++;
},200);

主要应用css的clip属性:

剪裁形状:高度是从top到bottom,宽度是从left到right

原理:用border画圆环,利用剪裁剪出左右两个半圆环,默认右半圆环width给0即不显示,左半圆环显示,之后放在一个大的圆形容器中,该容器利用剪裁默认只留右半部分来装右半圆环,这样默认左右半圆环都不会显示出来,当百分比进度<=50的时候,渐渐向大容器右半部分旋转左半圆环,这样进度会从0%-50%(50%时与右半圆环重叠);当百分比进度>50的时候大容器不需要剪裁即露出整个圆形,右半圆环显示出来(去掉width=0恢复宽度)继续旋转左半圆,即51%-100%(100%即左右圆环拼接成完整的圆环)。

 

css圆环实现方法:

1.border或box-shadow(box-shadow: [nset] 0 0 0 16px rgba(0, 0, 0, 0.5))

2.两个圆嵌套或用before/after

 

参考:https://blog.youkuaiyun.com/angeljsl/article/details/51208960

其他方法:https://blog.youkuaiyun.com/xuyunfei_2012/article/details/53672876

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值