Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/gozenc/animpure

Functional JavaScript animation library without any dependencies
https://github.com/gozenc/animpure

Last synced: about 1 month ago
JSON representation

Functional JavaScript animation library without any dependencies

Awesome Lists containing this project

README

        

# animpure

## Simple Animation Library

It's complete functional JavaScript animation library without any dependencies. Simply animate anything with a progress callback. You can choose any easing you want.

## Installation

### NPM

`npm i @gozenc/animpure`

### Yarn

`yarn add @gozenc/animpure`

### Sample Usage

```javascript
import animate, { Eases } from "@gozenc/animpure ";

const box = document.getElementById("box");

animate(
(progress: number) => {
// Progress starts from 0 to 1
// In this example; we want 0 to 100 so we multiply progress with 100
// So it goes 0,1,2,3... instead of 0.000000001, 0.000000002...
const animatedValue = (progress * 100).toFixed();
box.style.width = animatedValue + "px";
},
1000,
Eases.inOutQuint
); // If no ease is passed, it will be linear.
```

### Sample Usage with React as a Full Page Menu

You can use it a for full page menu, an example with React, Recoil and Tailwind classes. (If you willing to use this, you need to build a button to trigger the state):

```javascript
import React from "react";
import { menuOpenedState } from "../store";
import animate, { Eases } from "@gozenc/animpure";

export default function Menu() {
const [menuOpened] = useRecoilState(menuOpenedState);
const container = React.useRef < HTMLDivElement > null;

React.useEffect(() => {
if (!container.current) return;
animate(
(progress: number) => {
if (menuOpened) {
const animatedValue = (progress * 100).toFixed();
container.current.style.height = animatedValue + "vh";
} else {
const animatedValue = (100 - progress * 100).toFixed();
container.current.style.height = animatedValue + "vh";
}
},
1000,
Eases.inOutQuint
);
}, [menuOpened]);

const containerClasses = "bg-black fixed w-full z-20 border border-black";

return

;
}
```

### Thank you

For your interest. I am still developing it but you can download and use it. It's designed for thinking simple and lightweight code structures.