1、css代码

此处在制作进度条时,是旋转进度条的半圆(红色),背景使用灰白(如果使用红色作为背景,旋转灰白遮罩,在浏览器中可能会有渲染bug)

  1. .wrapper{ display:block;position:relative;width:100px;height:100px;border-radius:50px;overflow:hidden; }
  2. .pie { position:absolute;background-color:#e74c3c;width:100px;height:100px; }
  3. .pie1 { clip:rect(0px,50px,100px,0px); }
  4. .pie2 { clip:rect(0px,100px,100px,50px); }
  5. .hold { width:100px;height:100px;position:absolute;z-index:; }
  6. .hold1 { clip:rect(0px,100px,100px,50px); }
  7. .hold2 { clip:rect(0px,50px,100px,0px); }
  8. .bg { width:100px;height:100px;background-color:#f4f6f6;position:absolute; }
  9. .circle{position:absolute;background-color:#FFF;width:90px;height:90px;border-radius:45px;left:5px;top:5px;z-index:;}

以下的css的代码会产生渲染bug(导致灰白外侧有红色细线)

  1. .wrapper{ display:block;position:relative;width:100px;height:100px;border-radius:50px;overflow:hidden; }
  2. .pie { position:absolute;background-color:#f4f6f6;width:100px;height:100px; }
  3. .pie1 { clip:rect(0px,100px,100px,50px); }
  4. .pie2 { clip:rect(0px,50px,100px,0px); }
  5. .hold { width:100px;height:100px;position:absolute;z-index:; }
  6. .hold1 { clip:rect(0px,100px,100px,50px); }
  7. .hold2 { clip:rect(0px,50px,100px,0px); }
  8. .bg { width:100px;height:100px;background-color:#e74c3c;position:absolute; }
  9. .circle{position:absolute;background-color:#FFF;width:90px;height:90px;border-radius:45px;left:5px;top:5px;z-index:;}

2、html代码

  1. <div class="wrapper">
  2. <div class="hold hold1">
  3. <div class="pie pie1"></div>
  4. </div>
  5. <div class="hold hold2">
  6. <div class="pie pie2"></div>
  7. </div>
  8. <div class="bg"></div>
  9. <div class="circle"></div>
  10. </div>
  11. <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

3、js代码

  1. var pie = {
  2. run:function(opts){
  3. if(!opts.pie1 || !opts.pie2) throw new Error('must be element pie1 and pie2.');
  4. var pie1 = $(opts.pie1), pie2 = $(opts.pie2);
  5. var percent = opts.percent || 0;
  6. var step = opts.step || 3;
  7. var delay = opts.delay || 50;
  8. var callback = opts.callback || $.noop;
  9. var i = 0, rage = 360 * percent;
  10. var djs = function(){
  11. i = i + step;
  12. if(i <= rage){
  13. if(i <= 180){
  14. if((180 - i) < step){ i = 180; }
  15. pie1.css("-webkit-transform","rotate(" + i + "deg)");
  16. } else {
  17. if((rage - i) < step){ i = rage; }
  18. pie2.css("-webkit-transform","rotate(" + (i-180) + "deg)");
  19. }
  20. callback(i, rage);
  21. setTimeout(djs, delay);
  22. }
  23. };
  24. djs();
  25. }
  26. };
  27. pie.run({
  28. pie1:".pie1",
  29. pie2:".pie2",
  30. percent:0.75
  31. });

参考demo:http://liumiao.me/demo/count/

最新Canvas版

  1. .jqm-round-wrap{
  2. display:block;position:relative;width:130px;height:130px;overflow:hidden;
  3. border-radius:65px;
  4. -webkit-border-radius:65px;
  5. }
  6. #jqm-round-sector{
  7. position:absolute;width:130px;height:130px;
  8. }
  9. .jqm-round-bg {
  10. position:absolute;width:130px;height:130px;background-color:#f4f6f6;
  11. border-radius:65px;
  12. -webkit-border-radius:65px;
  13. }
  14. .jqm-round-circle{
  15. position:absolute;background-color:#FFF;width:120px;height:120px;left:5px;top:5px;z-index:;
  16. border-radius:60px;
  17. -webkit-border-radius:60px;
  18. }
  1. <div class="jqm-round-wrap">
  2. <div class="jqm-round-bg"></div>
  3. <canvas id="jqm-round-sector"></canvas>
  4. <div class="jqm-round-circle">15<samp>%</samp></div>
  5. </div>
  1. var pie = {
  2. run:function(opts){
  3. if(!opts.id) throw new Error("must be canvas id.");
  4. var canvas = document.getElementById(opts.id), ctx;
  5. if(canvas && (ctx = canvas.getContext("2d"))){
  6. canvas.width = canvas.height = "200";
  7. var noop = function(){};
  8. var before = opts.onBefore || noop;
  9. var after = opts.onAfter || noop;
  10. before(ctx);
  11. ctx.fillStyle = opts.color || '#f4f6f6';
  12. var step = opts.step || 1;
  13. var delay = opts.delay || 10;
  14. var i = 0, rage = 360 * (opts.percent || 0);
  15. var sRage = -Math.PI * 0.5;
  16. var djs = function(){
  17. i = i + step;
  18. if(i <= rage){
  19. ctx.beginPath();
  20. ctx.moveTo(100, 100);
  21. ctx.arc(100, 100, 100, sRage, Math.PI * 2 * (i/360)+sRage);
  22. ctx.fill();
  23. setTimeout(djs, delay);
  24. } else {
  25. after(ctx);
  26. }
  27. };
  28. djs();
  29. }
  30. }
  31. };
  32. pie.run({
  33. id:"jqm-round-sector",
  34. percent:0.75,
  35. onBefore:function(ctx){
  36. ctx.fillStyle = '#47b28b';
  37. ctx.beginPath();
  38. ctx.moveTo(100, 100);
  39. ctx.arc(100, 100, 100, 0, Math.PI * 2);
  40. ctx.fill();
  41. }
  42. });

CSS3制作同心圆进度条的更多相关文章

  1. 移动端纯CSS3制作圆形进度条所遇到的问题

    近日在开发的页面中,需要制作一个动态的圆形进度条,首先想到的是利用两个矩形,宽等于直径的一半,高等于直径,两个矩形利用浮动贴在一起,设置overflow:hidden属性,作为盒子,内部有一个与其宽高 ...

  2. css3 制作圆环进度条

    引子 移动端做一个 loadiing 加载的图标,跟以往沿用的都不太一样,是一个圆环进度条,圆环进度条也就罢了,还得能用百分比控制. CSS3 实现圆环 demo 刚开始写这个圆环的时候是参照帖子上给 ...

  3. css3圆形百分比进度条的实现原理

    原文地址:css3圆形百分比进度条的实现原理 今天早上起来在查看jquery插件机制的时候,一不小心点进了css3圆形百分比进度条的相关文章,于是一发不可收拾,开始折腾了... 关于圆形圈的实现,想必 ...

  4. CSS3时钟式进度条

    CSS3时钟式进度条,加载完成时生成一个圆,数字慢慢变成100,适时的显示加载进度.友情提醒,如果预览时网页左下角提示错误,刷新一下就可以看到效果了:实际使用中不会出现这样的问题. <!DOCT ...

  5. CSS3实现圆环进度条

    摘要:圆环进度条被应用于各个场景,比如我们可以用来表示加载进度等.通常我们可以用 css3 的动画去实现. 详解 css3 实现圆环进度条 简单的画一个圆环,我们都知道如何使用 css 画一个圆环.( ...

  6. 浅谈一下关于使用css3来制作圆环进度条

    最近PC端项目要做一个这样的页面出来,其他的都很简单,关键在于百分比的圆环效果.我最初打算是直接使用canvas来实现的,因为canvas实现一个圆是很简便的. 下面贴出canvas实现圆环的代码,有 ...

  7. CSS制作环形进度条

    参考来源 <Radial progress indicator using CSS>,该文核心是用纯CSS来做一个环形的进度条.纯css的意思就是连百分比这种数字,都是css生成的.文章作 ...

  8. CSS3实现圆形进度条

    介绍 闲来无事,去了CSS3Plus网站逛了逛,发现了一个很有意思的实现--css3实现进度条.粗略看了下代码,发现原理其实很简单,不难理解. 现在在此讲述下原理并实现一个1s更新的进度条. 技术细节 ...

  9. css3飞机起飞进度条

    效果:http://hovertree.com/texiao/css3/27/ 源码下载:http://hovertree.com/h/bjaf/pgwql1x2.htm 本效果使用Font Awes ...

随机推荐

  1. delphi怎么创建一个文本文件

    //创建一个文本文件 procedure TFrmAutomatismBalance.FlatButton3Click(Sender: TObject); var TF:TextFile;  Path ...

  2. 主席树入门(区间第k大)

    主席树入门 时隔5个月,我又来填主席树的坑了,现在才发现学算法真的要懂了之后,再自己调试,慢慢写出来,如果不懂,就只会按照代码敲,是不会有任何提升的,都不如不照着敲. 所以搞算法一定要弄清原理,和代码 ...

  3. aar引用 no executable code found问题

    主工程中 repositories { flatDir { dirs project(':trade_module').file('libs') }} dependencies { compile f ...

  4. (Array,位操作)137. Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  5. linux命令-cp/scp {拷贝}

    一 命令解释 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 命令参数: -a 尽可能 ...

  6. AX 2012 两种lookup 的显示方式

    第一种:只能单选的lookup: 代码: public void BusinessUnitLookup(FormStringControl _formstrcontroll) { //OMOperat ...

  7. FreeBSD从零开始---安装后配置(三)

    IPFW和IPF   一.IPFW IPFW意思可以理解为ip防火墙,主要作用是拦截设定规则外的ip包.你可以把这个理解为linux下的iptables,但是,ipfw要比iptables简单易用. ...

  8. jQuery String Functions

    In today's post, I have put together all jQuery String Functions. Well, I should say that these are ...

  9. winform窗体之间通过 windows API SendMessage函数传值

    -----------------------------------------------------------‘接收窗体’代码.cs------------------------------ ...

  10. IntelliJ IDEA 使用说明(For Eclipse user)

    IDEA和Eclipse主要在用户界面,编译方法和快捷键上有所差别. 1. 用户界面 1.1 No workspace IDEA 的Project相当于Eclipse的workspace,具体概念对比 ...