CSS3制作同心圆进度条
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制作同心圆进度条的更多相关文章
- 移动端纯CSS3制作圆形进度条所遇到的问题
近日在开发的页面中,需要制作一个动态的圆形进度条,首先想到的是利用两个矩形,宽等于直径的一半,高等于直径,两个矩形利用浮动贴在一起,设置overflow:hidden属性,作为盒子,内部有一个与其宽高 ...
- css3 制作圆环进度条
引子 移动端做一个 loadiing 加载的图标,跟以往沿用的都不太一样,是一个圆环进度条,圆环进度条也就罢了,还得能用百分比控制. CSS3 实现圆环 demo 刚开始写这个圆环的时候是参照帖子上给 ...
- css3圆形百分比进度条的实现原理
原文地址:css3圆形百分比进度条的实现原理 今天早上起来在查看jquery插件机制的时候,一不小心点进了css3圆形百分比进度条的相关文章,于是一发不可收拾,开始折腾了... 关于圆形圈的实现,想必 ...
- CSS3时钟式进度条
CSS3时钟式进度条,加载完成时生成一个圆,数字慢慢变成100,适时的显示加载进度.友情提醒,如果预览时网页左下角提示错误,刷新一下就可以看到效果了:实际使用中不会出现这样的问题. <!DOCT ...
- CSS3实现圆环进度条
摘要:圆环进度条被应用于各个场景,比如我们可以用来表示加载进度等.通常我们可以用 css3 的动画去实现. 详解 css3 实现圆环进度条 简单的画一个圆环,我们都知道如何使用 css 画一个圆环.( ...
- 浅谈一下关于使用css3来制作圆环进度条
最近PC端项目要做一个这样的页面出来,其他的都很简单,关键在于百分比的圆环效果.我最初打算是直接使用canvas来实现的,因为canvas实现一个圆是很简便的. 下面贴出canvas实现圆环的代码,有 ...
- CSS制作环形进度条
参考来源 <Radial progress indicator using CSS>,该文核心是用纯CSS来做一个环形的进度条.纯css的意思就是连百分比这种数字,都是css生成的.文章作 ...
- CSS3实现圆形进度条
介绍 闲来无事,去了CSS3Plus网站逛了逛,发现了一个很有意思的实现--css3实现进度条.粗略看了下代码,发现原理其实很简单,不难理解. 现在在此讲述下原理并实现一个1s更新的进度条. 技术细节 ...
- css3飞机起飞进度条
效果:http://hovertree.com/texiao/css3/27/ 源码下载:http://hovertree.com/h/bjaf/pgwql1x2.htm 本效果使用Font Awes ...
随机推荐
- delphi怎么创建一个文本文件
//创建一个文本文件 procedure TFrmAutomatismBalance.FlatButton3Click(Sender: TObject); var TF:TextFile; Path ...
- 主席树入门(区间第k大)
主席树入门 时隔5个月,我又来填主席树的坑了,现在才发现学算法真的要懂了之后,再自己调试,慢慢写出来,如果不懂,就只会按照代码敲,是不会有任何提升的,都不如不照着敲. 所以搞算法一定要弄清原理,和代码 ...
- aar引用 no executable code found问题
主工程中 repositories { flatDir { dirs project(':trade_module').file('libs') }} dependencies { compile f ...
- (Array,位操作)137. Single Number II
Given an array of integers, every element appears three times except for one. Find that single one. ...
- linux命令-cp/scp {拷贝}
一 命令解释 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 命令参数: -a 尽可能 ...
- AX 2012 两种lookup 的显示方式
第一种:只能单选的lookup: 代码: public void BusinessUnitLookup(FormStringControl _formstrcontroll) { //OMOperat ...
- FreeBSD从零开始---安装后配置(三)
IPFW和IPF 一.IPFW IPFW意思可以理解为ip防火墙,主要作用是拦截设定规则外的ip包.你可以把这个理解为linux下的iptables,但是,ipfw要比iptables简单易用. ...
- jQuery String Functions
In today's post, I have put together all jQuery String Functions. Well, I should say that these are ...
- winform窗体之间通过 windows API SendMessage函数传值
-----------------------------------------------------------‘接收窗体’代码.cs------------------------------ ...
- IntelliJ IDEA 使用说明(For Eclipse user)
IDEA和Eclipse主要在用户界面,编译方法和快捷键上有所差别. 1. 用户界面 1.1 No workspace IDEA 的Project相当于Eclipse的workspace,具体概念对比 ...