您好,登錄后才能下訂單哦!
小編給大家分享一下用css3如何實(shí)現(xiàn)環(huán)形進(jìn)度條效果,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
這種進(jìn)度條適合應(yīng)用于頁(yè)面加載的時(shí)候和環(huán)形計(jì)時(shí)器的頁(yè)面。本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于如何使用css3實(shí)現(xiàn)環(huán)形進(jìn)度條效果,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
如何使用css3實(shí)現(xiàn)條環(huán)進(jìn)度條效果原理
首先我們需要畫(huà)出圓形進(jìn)度條,但是div格式都是方形的,這就需要用到border-radius將方形轉(zhuǎn)換成圓形。
圓形的進(jìn)度條一直處于旋轉(zhuǎn)的狀態(tài),我們可以引用css3里面的rotage(deg)語(yǔ)句實(shí)現(xiàn)這一效果。
3.這里我們?cè)敿?xì)梳理一下rotage(deg)的用法
a.旋轉(zhuǎn):1.rotateX(deg) //繞x軸旋轉(zhuǎn)
2.rotateY(deg) //繞Y軸旋轉(zhuǎn)
3. rotateZ(deg) //繞Z軸旋轉(zhuǎn)
b.平移:translate(a,b) //在x,y方向平移a,b像素距離。利用translate(-50%,50%)可以實(shí)現(xiàn)居中。
translateX(a) //在X方向平移a的像素距離。
translateY(a)//在Y方向平移a的像素距離。
translateZ(a)//在Z方向平移a的像素距離。
如何使用css3實(shí)現(xiàn)條環(huán)進(jìn)度條效果步驟(代碼)
步驟一: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時(shí)需要使用遮罩進(jìn)行遮擋超出環(huán)形范圍部分 <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用來(lái)展示黃色和綠色的效果 &.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; } } //用遮擋實(shí)現(xiàn)左側(cè)剩余百分比,遮住超出環(huán)形范圍部分;核心是使用同心圓進(jìn)行邊框進(jìn)行遮擋 .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; //實(shí)際值為195deg,被遮擋環(huán)顏色值深有光暈,需要將角度進(jìn)行微調(diào)(-191deg) 進(jìn)行完全遮擋 -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); //領(lǐng)取進(jìn)度環(huán)形顏色className var halfClassName = percent<50?"little":"more"; //左半環(huán)遮罩層顯示樣式狀態(tài) var leftCircleDisplay = percent<50?"block":"none"; var leftRotate = 0; var rightRotate = 0; //以50%為界限;<50%:右半圓占比為0,左半圓需要使用遮罩進(jìn)行遮擋,展示剩余部分 // >50%:左半圓占比100%,右半圓直接使用百分比計(jì)算所占部分即可 //注意:在半圓中計(jì)算百分比時(shí),要將百分比乘以2。 if(percent<50){ leftRotate = -15-180+150*(percent*2)/100; rightRotate = -135; }else{ leftRotate = -15; rightRotate = -135+(150*((percent-50)*2)/100); //比例在半環(huán)計(jì)算需要*2倍 } circleData = { leftRotate:leftRotate, //左半環(huán)進(jìn)度 rightRotate:rightRotate, //右半環(huán)進(jìn)度 halfClassName:halfClassName, //50% 進(jìn)度環(huán) 變色 leftCircleDisplay:leftCircleDisplay, //左半環(huán)遮罩 percent:per //進(jìn)度百分比 } return circleData }
實(shí)現(xiàn)效果如圖所示
看完了這篇文章,相信你對(duì)用css3如何實(shí)現(xiàn)環(huán)形進(jìn)度條效果有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。