上一篇文章我們介紹了如何使用css3實現條形進度條效果(附完整程式碼),了解到進度條的實用性,那麼今天來向大家介紹一下另一種形式的進度條:環形進度條。
這種進度條適合套用於頁面載入的時候和環形計時器的頁面。這篇文章帶給大家的內容是關於如何使用css3實現環形進度條效果,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
如何使用css3實作條環進度條效果原理
#首先我們需要畫出圓形進度條,但是div格式都是方形的,這就需要用到border-radius將方形轉換成圓形。
圓形的進度條一直處於旋轉的狀態,我們可以引用css3裡面的rotage(deg)語句來實現這個效果。
3.這裡我們詳細整理rotage(deg)的用法
#
# rot aX
.. (deg) //繞x軸旋轉
2.rotateY(deg) //繞Y軸時旋轉 3. rotateZ(deg) //繞Z軸旋轉
b.平移:translate(a,b) //在x,y方向平移a,b像素距離。利用translate(-50%,50%)可以實現居中。
translateX(a) //上在X方向上平移a的像素所處。
translateY(a)//「朝向「朝」」方的像素距離下。 translateZ(a)//上在Z方向上平移a時的像素距離。
如何使用css3實作條環進度條效果步驟(程式碼)
步驟一:HTML部分
<div class="progress_wrap js_halfClassNameObj"> <div class="right under"> <div class="circleProgress rightcircle"></div> </div> <div class="left under"> <div class="circleProgress leftcircle"></div> </div> <div class="right up"> <div class="circleProgress rightcircle js_progressRight" style="-webkit-transform:rotate('+circleData.rightRotate.toString()+'deg)"></div> </div> <div class="left up"> <div class="circleProgress leftcircle js_progressLeft" style="-webkit-transform:rotate('+circleData.leftRotate.toString()+'deg)"></div> </div> //percent小于50时需要使用遮罩进行遮挡超出环形范围部分 <div class="left up_left_cover js_giftLeftCover" style="display:'+circleData.leftCircleDisplay+'"> <div class="circleProgress leftcircle color_border_t_l04"></div> </div> <div class="num"> <div>剩余</div> <div class="js_giftPercent">'+circleData.percent+'%</div> </div> </div>
步驟二:css部分
#
.progress_wrap{ position: relative; margin:0 0 0 .14rem; width:.92rem;height:.92rem; //little和more用来展示黄色和绿色的效果 &.little{ .under{ .rightcircle,.leftcircle{ border-top:$progress_border_under_little; } .rightcircle{ border-right:$progress_border_under_little; } .leftcircle{ border-left:$progress_border_under_little; } } .up{ .rightcircle,.leftcircle{ border-top:$progress_border_up_little; } .rightcircle{ border-right:$progress_border_up_little; } .leftcircle{ border-left:$progress_border_up_little; } } //用遮挡实现左侧剩余百分比,遮住超出环形范围部分;核心是使用同心圆进行边框进行遮挡 .up_left_cover{ width:.47rem;height:.92rem; .leftcircle{ top:-.02rem; width:.74rem;height:.74rem; border:.11rem solid transparent; border-top:$progress_border_up_left_cover_little; border-left:$progress_border_up_left_cover_little; //实际值为195deg,被遮挡环颜色值深有光晕,需要将角度进行微调(-191deg) 进行完全遮挡 -webkit-transform:rotate(-191deg); } } } &.more{ .under{ .rightcircle,.leftcircle{ border-top:$progress_border_under; } .rightcircle{ border-right:$progress_border_under; } .leftcircle{ border-left:$progress_border_under; } } .up{ .rightcircle,.leftcircle{ border-top:$progress_border_up; } .rightcircle{ border-right:$progress_border_up; } .leftcircle{ border-left:$progress_border_up; } } } .right,.left{ position: absolute;top:0;overflow:hidden; width:.46rem;height:.92rem; .circleProgress{ position: absolute; top:0; width: .78rem; height: .78rem; border:.07rem solid transparent; border-radius: 50%; } .rightcircle{ right:0; -webkit-transform: rotate(15deg); } .leftcircle{ left:0; -webkit-transform: rotate(-15deg); } } .right{ right:0; } .left{ left:0; } .num{ position: absolute;left:50%;top:50%; width:.5rem; transform:translate(-50%,-50%); font-size:.12rem;color:$public_auxiliary_col;text-align:center;line-height:.26rem; } }步驟三:js部分
##function giftCircleProgressFn(per){
var circleData = {};
var percent = parseInt(per);
//领取进度环形颜色className
var halfClassName = percent<50?"little":"more";
//左半环遮罩层显示样式状态
var leftCircleDisplay = percent<50?"block":"none";
var leftRotate = 0;
var rightRotate = 0;
//以50%为界限;<50%:右半圆占比为0,左半圆需要使用遮罩进行遮挡,展示剩余部分
// >50%:左半圆占比100%,右半圆直接使用百分比计算所占部分即可
//注意:在半圆中计算百分比时,要将百分比乘以2。
if(percent<50){
leftRotate = -15-180+150*(percent*2)/100;
rightRotate = -135;
}else{
leftRotate = -15;
rightRotate = -135+(150*((percent-50)*2)/100); //比例在半环计算需要*2倍
}
circleData = {
leftRotate:leftRotate, //左半环进度
rightRotate:rightRotate, //右半环进度
halfClassName:halfClassName, //50% 进度环 变色
leftCircleDisplay:leftCircleDisplay, //左半环遮罩
percent:per //进度百分比
}
return circleData
}
以上是環形進度條效果怎麼實現?用css3實作環形進度條效果程式碼範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!