1、css代码

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

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

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

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

2、html代码

 <div class="wrapper">
<div class="hold hold1">
<div class="pie pie1"></div>
</div>
<div class="hold hold2">
<div class="pie pie2"></div>
</div>
<div class="bg"></div>
<div class="circle"></div>
</div>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

3、js代码

 var pie = {
run:function(opts){
if(!opts.pie1 || !opts.pie2) throw new Error('must be element pie1 and pie2.');
var pie1 = $(opts.pie1), pie2 = $(opts.pie2);
var percent = opts.percent || 0;
var step = opts.step || 3;
var delay = opts.delay || 50;
var callback = opts.callback || $.noop;
var i = 0, rage = 360 * percent;
var djs = function(){
i = i + step;
if(i <= rage){
if(i <= 180){
if((180 - i) < step){ i = 180; }
pie1.css("-webkit-transform","rotate(" + i + "deg)");
} else {
if((rage - i) < step){ i = rage; }
pie2.css("-webkit-transform","rotate(" + (i-180) + "deg)");
}
callback(i, rage);
setTimeout(djs, delay);
}
};
djs();
}
};
pie.run({
pie1:".pie1",
pie2:".pie2",
percent:0.75
});

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

最新Canvas版

.jqm-round-wrap{
display:block;position:relative;width:130px;height:130px;overflow:hidden;
border-radius:65px;
-webkit-border-radius:65px;
}
#jqm-round-sector{
position:absolute;width:130px;height:130px;
}
.jqm-round-bg {
position:absolute;width:130px;height:130px;background-color:#f4f6f6;
border-radius:65px;
-webkit-border-radius:65px;
}
.jqm-round-circle{
position:absolute;background-color:#FFF;width:120px;height:120px;left:5px;top:5px;z-index:;
border-radius:60px;
-webkit-border-radius:60px;
}
<div class="jqm-round-wrap">
<div class="jqm-round-bg"></div>
<canvas id="jqm-round-sector"></canvas>
<div class="jqm-round-circle">15<samp>%</samp></div>
</div>
var pie = {
run:function(opts){
if(!opts.id) throw new Error("must be canvas id.");
var canvas = document.getElementById(opts.id), ctx;
if(canvas && (ctx = canvas.getContext("2d"))){
canvas.width = canvas.height = "200";
var noop = function(){};
var before = opts.onBefore || noop;
var after = opts.onAfter || noop;
before(ctx);
ctx.fillStyle = opts.color || '#f4f6f6';
var step = opts.step || 1;
var delay = opts.delay || 10;
var i = 0, rage = 360 * (opts.percent || 0);
var sRage = -Math.PI * 0.5;
var djs = function(){
i = i + step;
if(i <= rage){
ctx.beginPath();
ctx.moveTo(100, 100);
ctx.arc(100, 100, 100, sRage, Math.PI * 2 * (i/360)+sRage);
ctx.fill();
setTimeout(djs, delay);
} else {
after(ctx);
}
};
djs();
}
}
};
pie.run({
id:"jqm-round-sector",
percent:0.75,
onBefore:function(ctx){
ctx.fillStyle = '#47b28b';
ctx.beginPath();
ctx.moveTo(100, 100);
ctx.arc(100, 100, 100, 0, Math.PI * 2);
ctx.fill();
}
});

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. 如何使用openssl生成RSA公钥和私钥对

      在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互 ...

  2. js加解密

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. SQL查询树形结构的所有子节点

    如下一张表test:id name pid----------- ---------- -----------1 电器 NULL2 家电 13 冰箱 24 洗衣机 25 电脑 16 笔记本 57 平板 ...

  4. 如何将Debug文件夹下的资源打包成一个EXE文件直接执行

    前言:前段时间写了个小程序,想分享给好友看看,可所以资源都放在Debug文件夹下,整个文件夹发给人家这也太……,为了显得稍微专业一点,想把它们打包一个EXE文件执行,因为我见到到这样的程序,直接一个E ...

  5. [转]Amazon AWS亚马逊云服务免费一年VPS主机成功申请和使用方法

    今天部落将再次为大家介绍如何成功申请到来自亚马逊的Amazon AWS免费一年的VPS主机服务.亚马逊公司这个就不用介绍了,是美国最大的一家网络电子商务公司,亚马逊弹性计算云Amazon EC2更是鼎 ...

  6. 如何解決 Homebrew Update 失敗?

    相信許多用 MAC 系統的程式設計師.工程師們都有用 Homebrew 這個超好用的 Open Source 套件管理程式吧? 如果沒有的話,你可以透過以下的指令安裝: ruby -e "$ ...

  7. APP开发和web开发的区别

    1.web开发: 1.浏览器直接访问,协议是http,基本都是PC访问,也就是在家和办公场合,网络比较好. 2.web如果多个服务集成的话使用的是ESB来统一集成 2.APP开发 1.手机app客户端 ...

  8. W5500 keep-alive的用途与用法--新华龙电子

    大家是否遇到过这样的问题,W5500作为服务器已经建立连接,突然网线掉了,然后再去连接W5500,就连不上了.为什么?下面对这个问题进行解释说明,并提出解决办法. 图1中的上位机程序作为客户端,连接W ...

  9. 3.1 ARM汇编编程概述

    1. 汇编编程 为什么要学习汇编 1). Bootloader初始化 2). Linux kernel 3). 高效 2. ARM汇编分类 1. ARM标准汇编:ARM公司得汇编器适合在Windows ...

  10. Android工作学习第5天之Activity的完全退出程序

    注:本文大部分为网上转载,本人只是根据工作的需要略做整合! android 完全退出应用程序 注意:1.单例模式的学习 2.Manifest.xml,注意项目清单文件中要加上 android退出应用程 ...