div实现圆环进度条
<!DOCTYPE html> <html> <head> <meta charset="{CHARSET}"> <title>利用 clip-path 实现环形进度条</title> <style type="text/css"> *{margin:0;padding:0;} #circle,.test1{ width:200px; height:200px; border-radius:50%; } #circle{ background-color:#ccc; text-align:center; position:relative; left:50px; top:50px; } .test2{ background-color:blue; /*position: absolute;*/ /*clip: rect(0px,200px,200px,100px);*/ /*-webkit-clip-path:polygon(50% 50%,50% 0%,100% 0%,100% 100%,0% 100%,0% 0%,30% 0%);*/ } .circle-ban{ width:170px; height:170px; border-radius:50%; background-color:white; position:absolute; top:15px; left:15px; } .circle-ban p{margin-top:76px;} </style> </head> <body> <div id="circle"> <div class="test1"></div> <div class="circle-ban"> <p><span class="mask">0</span>%</p> </div> </div> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript"> function press(r){ /* 百分比与角度的关系 * 100%对应360度->1%=3.6deg * 角度与周长的关系 * 360度对应长度为800->0.45deg=1px * 百分比与周长的关系 * 100%对应周长800->0.125%=1px * ----->1%=8px * 45deg=100px(角度对应的周长)=50%(clip-path中的百分比) * ------->100%(百分比值)=400%(clip-path中的百分比) */ var r=r*4; var div=$(".test1"); div.addClass("test2"); var k1="polygon(50% 50%,50% 0%,"; var k2=k1+"100% 0%,"; var k3=k2+"100% 100%,"; var k4=k3+"0% 100%,"; var k5=k4+"0% 0%,"; if(r<=50){ r+=50; div.css({"-webkit-clip-path":k1+r+"% 0%)"}); }else if((r>50)&&(r<=150)){ r-=50; div.css({"-webkit-clip-path":k2+"100% "+r+"%)"}); }else if((r>150)&&(r<=250)){ r=250-r; div.css({"-webkit-clip-path":k3+r+"% 100%)"}); }else if((r>250)&&(r<=350)){ r=350-r; div.css({"-webkit-clip-path":k4+"0% "+r+"%)"}); }else if((r>350)&&(r<=400)){ r-=350; div.css({"-webkit-clip-path":k5+r+"% 0%)"}); } } var n=0; var timer=setInterval((function(){ n++; if(n==100){clearInterval(timer);timer=null;} $(".mask").text(n); press(n); }),100); </script> </body> </html>