0.0.7 • Published 2 years ago

@gozenc/animpure v0.0.7

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

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

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):

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;
        if (menuOpened) {
            animate((progress: number) => {
                const animatedValue = (progress * 100).toFixed();
                container.current.style.height = animatedValue + "vh";
            }, 1000, Eases.inOutQuint);
        } else {
            // If menu is not yet interacted - do nothing.
            if (container.current.style.height === "") return;
            animate((progress: number) => {
                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 (
        <div ref={container} className={containerClasses}/>
    );
}

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.