2016-08-20 41 views
4

我想要一个半圈,如my fiddle所示。进度条需要有绿色。如何使用jQuery创建半圆进度条

我是Jquery的新手。

HTML:

<div> 
    <p>100%</p> 
</div> 

CSS:

div { 
    height: 45px; 
    width: 90px; 
    border-radius: 90px 90px 0 0; 
    -moz-border-radius: 90px 90px 0 0; 
    -webkit-border-radius: 90px 90px 0 0; 
    border: 5px solid red; 
    border-bottom: none; 
} 

p { 
    text-align: center; 
    padding: 20px 0; 
} 

Fiddle

+0

你需要使用一些JS插件做那。检查此:https://github.com/kottenator/jquery-circle-progress – fernando

+0

只是试图旋钮jquery库我跳它用完全你。 http://anthonyterrien.com/demo/knob/ –

+0

@Dhaval Thankyou!谷歌搜索!但没有运气,这就是为什么我在这里问 – parish

回答

10

使用jQuery对任意值.animate()step控制.bar CSS3 transform: rotate

$(".progress").each(function(){ 
 
    
 
    var $bar = $(this).find(".bar"); 
 
    var $val = $(this).find("span"); 
 
    var perc = parseInt($val.text(), 10); 
 

 
    $({p:0}).animate({p:perc}, { 
 
    duration: 3000, 
 
    easing: "swing", 
 
    step: function(p) { 
 
     $bar.css({ 
 
     transform: "rotate("+ (45+(p*1.8)) +"deg)", // 100%=180° so: ° = % * 1.8 
 
     // 45 is to add the needed rotation to have the green borders at the bottom 
 
     }); 
 
     $val.text(p|0); 
 
    } 
 
    }); 
 
});
.progress{ 
 
    position: relative; 
 
    margin: 4px; 
 
    float:left; 
 
    text-align: center; 
 
} 
 
.barOverflow{ /* Wraps the rotating .bar */ 
 
    position: relative; 
 
    overflow: hidden; /* Comment this line to understand the trick */ 
 
    width: 90px; height: 45px; /* Half circle (overflow) */ 
 
    margin-bottom: -14px; /* bring the numbers up */ 
 
} 
 
.bar{ 
 
    position: absolute; 
 
    top: 0; left: 0; 
 
    width: 90px; height: 90px; /* full circle! */ 
 
    border-radius: 50%; 
 
    box-sizing: border-box; 
 
    border: 5px solid #eee;  /* half gray, */ 
 
    border-bottom-color: #0bf; /* half azure */ 
 
    border-right-color: #0bf; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="progress"> 
 
    <div class="barOverflow"> 
 
    <div class="bar"></div> 
 
    </div> 
 
    <span>10</span>% 
 
</div> 
 

 
<div class="progress"> 
 
    <div class="barOverflow"> 
 
    <div class="bar"></div> 
 
    </div> 
 
    <span>100</span>% 
 
</div> 
 

 
<div class="progress"> 
 
    <div class="barOverflow"> 
 
    <div class="bar"></div> 
 
    </div> 
 
    <span>34</span>% 
 
</div> 
 

 
<div class="progress"> 
 
    <div class="barOverflow"> 
 
    <div class="bar"></div> 
 
    </div> 
 
    <span>67</span>% 
 
</div>

PS:你需要JS(它在纯CSS3可行的......除非你需要精确控制进步的阶梯)

+2

不错的做法:) – akinuri

+1

谢谢,这将工作!但是,是否有可能以红色显示全部边界,并且只能以绿色显示完成的过程? – parish

+0

[小提琴](https://jsfiddle.net/jf5jaohq/1/)检查一下。我需要那条红线上的'bar' div ..那条红线永远不会移动它保持它的状态 – parish