Responsive, accessible, animated, stylable with CSS circular progress bar available as plain (vanilla) JavaScript and jQuery plugin.
See examples or go to the project site
Download the minified production version
In your web page:
<div class="progress"></div>
<script src="dist/circle-progress.min.js"></script>
<script>
new CircleProgress('.progress');
</script>
Download the minified jQuery production version
In your web page:
<div class="progress"></div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="dist/jquery.circle-progress.min.js"></script>
<script>
jQuery(function($) {
$('.progress').circleProgress();
});
</script>
jQuery version of Circle Progress is built on top of plain JavaScript version. It uses jQuery Widget Factory. Two files are available: one that contains the Widget Factory code, and one that doesn't.
jquery.circle-progress.bare.min.js
, if you have already included the jQuery Widget Factory or another native jQuery widget in your page.jquery.circle-progress.min.js
, which includes the jQuery Widget Factory code.const circleProgress = new CircleProgress(element, options, doc);
where
element
is HTML element or selector to be converted into a progress circle (required),
options
- object map of options (optional),
doc
- the document we are acting upon (optional).
$('.progress').circleProgress(options);
where options
is object map of options (optional).
You can customize Circle Progress with these options by either passing options object at initiation, or setting them later, e. g.:
Set options as properties on a CircleProgress instance:
circleProgress.max = 100;
circleProgress.value = 20;
or using the chainable attr
method by passing it option key and value:
circleProgress
.attr('max', 100)
.attr('value', 20);
or options object
circleProgress.attr({
max: 100,
value: 20,
});
$('.progress').circleProgress('value', 20);
or
$('.progress').circleProgress({
max: 100,
value: 20,
});
Option | Type | Default | Description |
---|---|---|---|
value | Number | Indeterminate | Current value |
min | Number | 0 | Minimum value |
max | Number | 1 | Maximum value |
startAngle | Number | 0 | Starting angle in degrees. Angle of 0 points straight up. Direction depends on clockwise . |
clockwise | Boolean | true | Whether to rotate clockwise (true) or anti-clockwise (false) |
constrain | Boolean | true | Whether the value should be constrained between min and max . If true, values over max will be truncated to max and values under min will be set to min . |
indeterminateText | String | '?' | Text to display as the value when it is indeterminate |
textFormat | String or Function | 'horizontal' | Text layout for value, min, max. You can pass either one of the possible keywords: horizontal - value/max vertical - value is shown over max percent - value% value - only value is shown valueOnCircle - the value is painted on top of the filled region on the circle none - no text is shown. Alternatively you can provide your own function, which will be called each time progress is updated with value and max as arguments and is expected to return a string to insert in the center of the progress circle |
animation | String | 'easeInOutCubic' | Animation easing function. One of linear , easeInCubic , easeOutCubic , easeInOutCubic , easeInQuadr , easeOutQuadr , easeInOutQuadr or none |
animationDuration | Number | 600 | Animation duration in milliseconds |
To customize widget's appearance, you can style its underlying SVG elements with CSS. The elements are:
Class | Description |
---|---|
circle-progress |
The svg image. You can use this selector to scale the widget. E. g.: .circle-progress {width: 200px; height: auto;} |
circle-progress-circle |
The entire circle (SVG circle element) |
circle-progress-value |
The arc representing currently filled progress (SVG path element) |
circle-progress-text |
Text controlled by textFormat option (SVG text element) |
circle-progress-text-value |
Current value text (SVG tspan element). Appears only for textFormat values of horizontal , vertical , valueOnCircle |
circle-progress-text-max |
Maximum value text (SVG tspan element). Appears only for textFormat values of horizontal , vertical , valueOnCircle |
You can use any SVG presentation attributes on these elements. Particularly useful are:
fill
, stroke
, stroke-width
, stroke-linecap
properties. (See examples)
The default options are stored in CircleProgress.defaults or jQuery.fn.circleProgress.defaults. The two are references to the same object. You can override them, so that all instances will be created with the overridden options.
Chrome, Firefox, Safari, Edge and IE 11 are supported.
© 2018 Tigran Sargsyan
Licensed under (the MIT License)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。