Highly customizable & lightweight circular progressbar component for Vue 3, built with SVG and extensively customizable.
- Installation
- Usage and Examples
- Props
- Gradient (props.gradient)
- Shadow (props.shadow)
- Callback
- Default Props
Live demo: codesandbox.io/s/determined-dawn-3ybev
Install with npm:
npm install --save vue3-circle-progress
or yarn:
yarn add vue3-circle-progress
<template> // Basic Usage <circle-progress :percent="40" /> // Default Gradient <circle-progress :is-gradient="true" /> // Customize Gradient <circle-progress :is-gradient="true" :gradient="{ angle: 90, startColor: '#ff0000', stopColor: '#ffff00' }" /> // Default Shadow <circle-progress :is-bg-shadow="true" /> // Customize Shadow <circle-progress :is-bg-shadow="true" :bg-shadow="{ inset: true, vertical: 2, horizontal: 2, blur: 4, opacity: .4, color: '#000000' }" empty-color="#f7f7f7" :border-width="6" :border-bg-width="30" /> </template> <script> import "vue3-circle-progress/dist/circle-progress.css"; import CircleProgress from "vue3-circle-progress"; export default { components: {CircleProgress} } </script>
Available Props, this package supports 30+ props
Names | Description | Default Value | Type | Range/Max |
---|---|---|---|---|
size | Circle height & Width | 180 | Int | ∞ |
border-width | Circle Border width | 15 | Int | ∞ |
border-bg-width | Circle Border Background width | 15 | Int | ∞ |
fill-color | Stroke Fill Color | #288feb | String | N/A |
empty-color | Stroke (empty) BG Fill Color | #288feb | String | N/A |
background | Circle Background | none | String | N/A |
class | Component Custom Class | '' | String | N/A |
percent | Fill Percent | 55 | Int | 100 |
linecap | Stroke Line Style | round | String | N/A |
is-gradient | Enable Gradient | false | Boolean | N/A |
transition | Apply transition when percent change | 200 (ms) | Int | ∞ |
gradient | Gradient Essential Values | {...} | Object | N/A |
is-shadow | Enable Circle Shadow | false | Boolean | N/A |
shadow | Shadow Essential Values | {...} | Object | N/A |
is-bg-shadow | Enable Circle BG Shadow | false | Boolean | N/A |
bg-shadow | Shadow Essential Values | {...} | Object | N/A |
viewport | Animate when element is in viewport | true | Boolean | N/A |
on-viewport | Callback function to detect viewport | undefined | Function | N/A |
show-percent | Enable disable percent counter | false | Boolean | N/A |
unit | Unit of percent counter | '%' | String | N/A |
<template> <circle-progress :is-bg-shadow="true" :bg-shadow="{ inset: true, vertical: 2, horizontal: 2, blur: 4, opacity: .4, color: '#000000' }" empty-color="#f7f7f7" :border-width="6" :border-bg-width="30" /> </template> <script> import CircleProgress from "vue3-circle-progress"; export default { components: {CircleProgress} } </script>
Names | Description | Default Value | Type | Range/Max |
---|---|---|---|---|
angle | Gradinet Angle | 0 | Int | 0-360 |
startColor | Gradient Start Color | #ff0000 | String | N/A |
stopColor | Gradient Stop Color | #ffff00 | String | N/A |
<circle-progress :is-gradient="true" :gradient="{ angle: 90, startColor: '#ff0000', stopColor: '#ffff00' }" />
Names | Description | Default Value | Type | Range/Max |
---|---|---|---|---|
inset | Set Shadow Inset or Outset | false | Boolean | N/A |
vertical | Shadow Vertical Offset | 3 | Int | ∞ |
horizontal | Shadow Horizontal Offset | 0 | Int | ∞ |
blur | Shadow Blur | 0 | Int | ∞ |
opacity | Shadow Opacity | .4 | Float | 0-1 |
color | Shadow Color | #000000 | String | 0-1 |
<circle-progress :is-shadow="true" :shadow="{ inset: true, vertical: 2, horizontal: 2, blur: 4, opacity: .4, color: '#000000' }" />
Names | Description | Default Value | Type | Range/Max |
---|---|---|---|---|
inset | Set Shadow Inset or Outset | false | Boolean | N/A |
vertical | Shadow Vertical Offset | 3 | Int | ∞ |
horizontal | Shadow Horizontal Offset | 0 | Int | ∞ |
blur | Shadow Blur | 0 | Int | ∞ |
opacity | Shadow Opacity | .4 | Float | 0-1 |
color | Shadow Color | #000000 | String | 0-1 |
<circle-progress :is-bg-shadow="true" :bg-shadow="{ inset: true, vertical: 2, horizontal: 2, blur: 4, opacity: .4, color: '#000000' }" />
This callback function fires when the target element is in the viewport.
<circle-progress :on-viewport="() => { // do something }" />