mirror of
https://github.com/chartjs/Chart.js.git
synced 2024-10-06 12:19:08 +02:00
98 lines
2.6 KiB
Markdown
98 lines
2.6 KiB
Markdown
# Animations
|
|
|
|
Chart.js animates charts out of the box. A number of options are provided to configure how the animation looks and how long it takes.
|
|
|
|
## Animation Configuration
|
|
|
|
The following animation options are available. The global options for are defined in `Chart.defaults.global.animation`.
|
|
|
|
| Name | Type | Default | Description
|
|
| ---- | ---- | ------- | -----------
|
|
| `duration` | `number` | `1000` | The number of milliseconds an animation takes.
|
|
| `easing` | `string` | `'easeOutQuart'` | Easing function to use. [more...](#easing)
|
|
| `onProgress` | `function` | `null` | Callback called on each step of an animation. [more...](#animation-callbacks)
|
|
| `onComplete` | `function` | `null` | Callback called at the end of an animation. [more...](#animation-callbacks)
|
|
|
|
## Easing
|
|
|
|
Available options are:
|
|
* `'linear'`
|
|
* `'easeInQuad'`
|
|
* `'easeOutQuad'`
|
|
* `'easeInOutQuad'`
|
|
* `'easeInCubic'`
|
|
* `'easeOutCubic'`
|
|
* `'easeInOutCubic'`
|
|
* `'easeInQuart'`
|
|
* `'easeOutQuart'`
|
|
* `'easeInOutQuart'`
|
|
* `'easeInQuint'`
|
|
* `'easeOutQuint'`
|
|
* `'easeInOutQuint'`
|
|
* `'easeInSine'`
|
|
* `'easeOutSine'`
|
|
* `'easeInOutSine'`
|
|
* `'easeInExpo'`
|
|
* `'easeOutExpo'`
|
|
* `'easeInOutExpo'`
|
|
* `'easeInCirc'`
|
|
* `'easeOutCirc'`
|
|
* `'easeInOutCirc'`
|
|
* `'easeInElastic'`
|
|
* `'easeOutElastic'`
|
|
* `'easeInOutElastic'`
|
|
* `'easeInBack'`
|
|
* `'easeOutBack'`
|
|
* `'easeInOutBack'`
|
|
* `'easeInBounce'`
|
|
* `'easeOutBounce'`
|
|
* `'easeInOutBounce'`
|
|
|
|
See [Robert Penner's easing equations](http://robertpenner.com/easing/).
|
|
|
|
## Animation Callbacks
|
|
|
|
The `onProgress` and `onComplete` callbacks are useful for synchronizing an external draw to the chart animation. The callback is passed a `Chart.Animation` instance:
|
|
|
|
```javascript
|
|
{
|
|
// Chart object
|
|
chart: Chart,
|
|
|
|
// Current Animation frame number
|
|
currentStep: number,
|
|
|
|
// Number of animation frames
|
|
numSteps: number,
|
|
|
|
// Animation easing to use
|
|
easing: string,
|
|
|
|
// Function that renders the chart
|
|
render: function,
|
|
|
|
// User callback
|
|
onAnimationProgress: function,
|
|
|
|
// User callback
|
|
onAnimationComplete: function
|
|
}
|
|
```
|
|
|
|
The following example fills a progress bar during the chart animation.
|
|
```javascript
|
|
var chart = new Chart(ctx, {
|
|
type: 'line',
|
|
data: data,
|
|
options: {
|
|
animation: {
|
|
onProgress: function(animation) {
|
|
progress.value = animation.animationObject.currentStep / animation.animationObject.numSteps;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
```
|
|
|
|
Another example usage of these callbacks can be found on [Github](https://github.com/chartjs/Chart.js/blob/master/samples/advanced/progress-bar.html): this sample displays a progress bar showing how far along the animation is.
|