Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/degjs/easing

Javascript animation easing functions
https://github.com/degjs/easing

animation-css

Last synced: about 1 month ago
JSON representation

Javascript animation easing functions

Awesome Lists containing this project

README

        

# Easing
![Run Tests](https://github.com/DEGJS/easing/workflows/Run%20Tests/badge.svg)

A collection of animation easing functions in Javascript's ES6 module format. Easing functions specify the rate of change of a parameter over time. Learn more about easing [here](https://developers.google.com/web/fundamentals/design-and-ui/animations/the-basics-of-easing?hl=en).

## Install
Easing is an ES module. If your runtime environment does not support ES modules, you'll need a transpiler ([Babel](https://babeljs.io) is a nice one).

If you're using NPM, you can install Easing with the following command:

```
$ npm install @degjs/easing
```

## Usage
```js
import { easeInOutCubic } from '@degjs/easing';

// animate a value from 100 to 300 with ease-in-out easing over the course of 1 second
let currentIteration = 0,
totalIterations = 60,
startValue = 100,
changeInValue = 200,
easedValue;

window.requestAnimationFrame(onAnimationFrame);

function onAnimationFrame() {
if(currentIteration < totalIterations) {
currentIteration++;
easedValue = easeInOutCubic(currentIteration, startValue, changeInValue, totalIterations);
}
}

```

## Methods
All methods take the same four parameters, defined below:
#### currentIteration
Type: `Number`
The current iteration. Think of this in terms of animation frames or seconds/milliseconds.

#### startValue
Type: `Number`
The start value. This is the initial state of the value that will be animated.

#### changeInValue
Type: `Number`
The amount of change in the value over the duration of the animation.

#### totalIterations
The duration of the animation. Think of this in terms of animation frames or seconds/milliseconds.

### .linear(currentIteration, startValue, changeInValue, totalIterations)
A linear rate of change with no easing.
### .easeOutCubic(currentIteration, startValue, changeInValue, totalIterations)
Starts quickly and ends slowly.
### .easeInCubic(currentIteration, startValue, changeInValue, totalIterations)
Starts slowly and ends quickly.
### .easeInOutCubic(currentIteration, startValue, changeInValue, totalIterations)
Starts and ends slowly.