A library of reusable easing functions
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.editorconfig
.gitignore
.npmignore
.travis.yml
README.md
alm.json
package-lock.json
package.json
tsconfig.es2015.json
tsconfig.json
tsconfig.node.json
tslint.json

README.md

Just Curves

Just Curves is a math library for animation and tweening!

npm version Build Status Downloads

Why use Just Curves?

  • Common easing curves like easeIn, easeOut, easeInQuint for JS and CSS
  • Custom eases using cubicBezier(), steps(), and cssFunction()
  • Use CSS easing functions from existing code
  • Small download size: < 5k minified with no dependencies
  • Works with Just Animate, TweenRex, nm8, Popmotion, AnimeJS, MoJS, and other animation engines that accept easings in form of (offset: number) => number

Power this project up with 🌟s, ^ star it please.

Getting Started

Setup from CDN

Include this script

<script src="https://unpkg.com/just-curves/dist/just-curves.min.js"></script>

Setup for bundling

npm install just-curves --save

Curve creators

CSS Function

Creates a curve from a css easing function

Browser

const linear = just.curves.cssFunction('linear');
const ease = just.curves.cssFunction('cubic-bezier(0.25, 0.1, 0.25 0.1)');

Bundled

import { cssFunction } from 'just-curves';

const linear = cssFunction('linear');
const ease = cssFunction('cubic-bezier(0.25, 0.1, 0.25 0.1)');

Cubic Bezier

Creates a cubic-bezier curve using 4 numbers

Follows cubic-bezier CSS spec

Browser

const ease = just.curves.cubicBezier(.25, .1, .25, 1);

Bundled

import { cubicBezier } from 'just-curves';

const ease = cubicBezier(.25, .1, .25, 1);

Steps

Creates a curve that advances in steps

Follows step CSS timing spec

Browser

const stepStart = just.curves.steps(1, 'start');
const stepEnd   = just.curves.steps(1, 'end');

Bundled

import { steps } from 'just-curves';

const stepStart = steps(1, 'start');
const stepEnd   = steps(1, 'end');

Curves made for JavaScript

Browser

just.curves./* curve name here */

Bundled

import { /* curve name here */ } from 'just-curves';

The chart below shows all of the easings ready for use in JavaScript as is except for linear.

Type In Out In-Out
back easeInBack easeOutBack easeInOutBack
bounce easeInBounce easeOutBounce easeInOutBounce
circ easeInCirc easeOutCirc easeInOutCirc
cubic easeInCubic easeOutCubic easeInOutCubic
elastic easeInElastic easeOutElastic easeInOutElastic
expo easeInExpo easeOutExpo easeInOutExpo
quad easeInQuad easeOutQuad easeInOutQuad
quart easeInQuart easeOutQuart easeInOutQuart
quint easeInQuint easeOutQuint easeInOutQuint
sine easeInSine easeOutSine easeInOutSine
step stepStart stepEnd

Curves made for in CSS

Browser

const curve = just.curves.css./* curve name here */;

Bundled

import { css } from 'just-curves';

const curve = css./* curve name here */;

The chart below shows all of the easings ready for use in CSS as is except for linear.

Type In Out In-Out
back easeInBack easeOutBack easeInOutBack
bounce easeInBounce easeOutBounce easeInOutBounce
circ easeInCirc easeOutCirc easeInOutCirc
cubic easeInCubic easeOutCubic easeInOutCubic
ease easeIn easeOut easeInOut
expo easeInExpo easeOutExpo easeInOutExpo
quad easeInQuad easeOutQuad easeInOutQuad
quart easeInQuart easeOutQuart easeInOutQuart
quint easeInQuint easeOutQuint easeInOutQuint
sine easeInSine easeOutSine easeInOutSine
special elegantSlowStartEnd
step stepStart stepEnd