2016-12-03 20 views
0

我想在html和css中創建一個進度輪,如果有必要,也可以使用jQuery。我創建了一個輪子,但問題是如何根據給定的百分比設置邊框的長度。
這裏是代碼:在CSS中創建進度輪

.loader { 
 
    border: 16px solid #f3f3f3; 
 
    border-radius: 50%; 
 
    border-top: 16px solid #3498db; 
 
    width: 120px; 
 
    height: 120px; 
 
}
<div class="loader"></div>

它在其上創建一個圓圈,藍色邊框,但我要像下面的圖片。 Progress Wheel with precentage

+0

請在撥弄你的代碼的開始和結束位置。 –

+0

@ShivkumarKondi它在那裏作爲一個片段,你需要一個小提琴? – connexo

+0

請不要將CSS用於這樣的事情。 SVG是一個更好的替代品,這個線程可以幫助你 - http://stackoverflow.com/questions/35132864/progress-circle-draw-a-small-arc-at-the-end-tip-of-the-circle - 更多/ 35134680#35134680。它略有不同,但應引導你。 – Harry

回答

1

這是我做的radial progress bar。我已經更新它以滿足您的需求。

填充百分比通過並給予.pure-css .semi.right .circletransformrotate.pure-css .semi.left .circle

.pure-css { 
 
    width: 300px; 
 
    height: 300px; 
 
    border-radius: 50%; 
 
    background: #fff; 
 
    position: relative; 
 
    color: #fff; 
 
} 
 

 
.pure-css .semi { 
 
    width: 50%; 
 
    height: 100%; 
 
    position: relative; 
 
    display: inline-block; 
 
    float: left; 
 
    overflow: hidden; 
 
    z-index:2; 
 
    transform:rotate(30deg) 
 
} 
 

 
.pure-css .semi.left{ 
 
    transform-origin:100% 50%; 
 
} 
 
.pure-css .semi.right{ 
 
    transform-origin:0% 50%; 
 
} 
 
.pure-css .semi.right .circle { 
 
    border-top-left-radius: 150px; 
 
    border-bottom-left-radius: 150px; 
 
    border-right: 0; 
 
    transform: rotate(181deg) translate(-100%, 0); 
 
    animation: rotate 4s linear forwards; 
 
    transform-origin: 0% 50%; 
 
} 
 

 
.pure-css .semi.left .circle { 
 
    border-top-right-radius: 150px; 
 
    border-bottom-right-radius: 150px; 
 
    border-left: 0; 
 
    transform: rotate(36deg) translate(100%, 0); 
 
    animation: rotate2 4s linear forwards; 
 
    transform-origin: 100% 50%; 
 
    animation-delay: 42s; 
 
} 
 

 
.pure-css .semi .circle { 
 
    width: 100%; 
 
    height: 100%; 
 
    box-sizing: border-box; 
 
    border: 50px solid #4ec9aa; 
 
} 
 

 
.pure-css .text { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
    display: inline-block; 
 
    overflow: hidden; 
 
    font-size: 28px; 
 
    color:#28645d; 
 
    text-align:center; 
 
} 
 
.pure-css .shade { 
 
    width: 100%; 
 
    height: 100%; 
 
    transform:scale(.9,.9); 
 
    border-radius: 50%; 
 
    box-sizing: border-box; 
 
    border: 30px solid #e7ebee; 
 
}
<div class="rp"> 
 
    <div class="pure-css"> 
 
     <div class="semi left"> 
 
     <div class="circle"></div> 
 
     </div> 
 
     <div class="semi right"> 
 
     <div class="circle"></div> 
 
     </div> 
 
     <div class="text"> 
 
     <span class="num">Goal<br><b>20,000$</b></span> 
 
     </div> 
 
     <div class="shade"></div> 
 
    </div> 
 
    </div>

確定要改變填充值給

.pure-css .semi.left .circle{ 
    transform: rotate(xdeg) translate(-100%, 0); 
} 
.pure-css .semi.right.circle{ 
    transform: rotate(xdeg) translate(-100%, 0); 
} 

其中x是一個值在0和180之間(可選)給180至.semi.right將填充一半的圓圈,180到.semi-left將填滿整個圓圈。

爲了根據一個百分比值填補,填補< 50%設置的.semi.right .circletransformpercentage * 360/100 deg和用於填充>50%設置的轉換的.semi.left .circle to 180 - (percentage * 360/100) deg

爲了確定填充值

.pure-css .semi { 
    transform:rotate(xdeg) 
} 
+0

如何更改百分比值,如果我想將其設置爲40%,或80%或100%,則必須完成圓圈 –

+0

@AzeemHaider我已更新代碼,現在已填充60%,用於填充< 50將'.semi.right .circle'的變換設置爲'percentage * 360/100 deg',並且填充> 50時,將'.semi.right .circle'的變換設置爲'180 - (percentage * 360/100) deg' – Akshay

+0

感謝您的工作,但請您讓我知道如何根據我的要求填滿?就像使用JavaScript一樣。我需要更改哪些值? –