這是我做的radial progress bar。我已經更新它以滿足您的需求。
填充百分比通過並給予.pure-css .semi.right .circle
的transform
rotate
值.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 .circle
的transform
到percentage * 360/100 deg
和用於填充>50%
設置的轉換的.semi.left .circle to 180 - (percentage * 360/100) deg
。
爲了確定填充值
.pure-css .semi {
transform:rotate(xdeg)
}
請在撥弄你的代碼的開始和結束位置。 –
@ShivkumarKondi它在那裏作爲一個片段,你需要一個小提琴? – connexo
請不要將CSS用於這樣的事情。 SVG是一個更好的替代品,這個線程可以幫助你 - http://stackoverflow.com/questions/35132864/progress-circle-draw-a-small-arc-at-the-end-tip-of-the-circle - 更多/ 35134680#35134680。它略有不同,但應引導你。 – Harry