🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

The React motions library helps compose React animations using High-Order functions or components.

Animation Featured React

Documentation

React Motions

CircleCI

Compose React Animations using High-Order Functions or Components

React-Motions is a mix of ideas from Recompose and Animate.css. In fact, react-motions is a set of pure functions entirely based on animation purpose.

yarn add react-motions --dev 

Usage

Using HOF

import { withBounce, withShake, withInfinite, withSequence } from 'react-motions'  const Component = <div>How can I look beautiful</div>  const ComponentWithShake = withShake(Component) const ComponentWithShakeAndBounce = withShake(withBounce(Component)) const ComponentWithInfiniteBounce = withInfinite(withBounce(Component)) const ComponentWithShakeThenBounce = withSequence(withShake(withBounce(Component)))

HOF - Based on Compositions

You can add compose animations (even custom animations) based on functions. Here is an example:

import { withShake, withFadeOut, withInfine } from 'react-motions'  const Component = () => (   withInfinite(     withFadeOut(       withInfinite(         withShake(           <h2>Bouncing and Fading Out infinitely!!</h2>         )       )     )   ) )

Using Components

import { Bounce, Shake } from 'react-motions'  const ComponentWithShake = () => (   <Shake duration={4}>     <div>How can I look beautiful</div>   </Shake> )  const ComponentWithBounce = () => (   <Bounce infinite>     <div>How can I look beautiful</div>   </Bounce> )

React-Motions was created to be agnostic to the renderer:

React Renderer Available for use Version
React-DOM ✔️ ^16
React-Native ✖️ ✖️
React-TV ✔️ ^0.3

API

withInfinite

Set last animation with infinity property.

import { withInfinite, withBounce } from 'react-motions'  const DoNotStopBouncing = withInfinite(withBounce(<div>Let's bounce without stop!</div>))

withSequence

Execute next animation only after previous animation be finished.

import { withSequence, withShake, withJello } from 'react-motions'  const SequencialAnimations = withSequence(   withShake,   withJello,   <div>First shake it then jello! </div> )

compose

Execute all animations in the same time.

import { compose, withFlash, withPulse } from 'react-motions'  const VividAnimation = compose(   withFlash,   withPulse,   <div>Flash and Pulse!</div> )

Bounce

Component

Render a React Component with Bounce animation (2s duration and iterationCount infinite)

import { Bounce } from 'react-motions'  const ComponentBounce = (   <Bounce duration={2} infinite>     Let's bounce here   </Bounce> )

Function

Return a React Component with Bounce animation (1s duration)

import { withBounce } from 'react-motions'  const ComponentWithBounce = withBounce(<div>Let's bounce here</div>)

FadeIn

Component

Render a React Component with FadeIn animation (2s duration and iterationCount infinite)

import { FadeIn } from 'react-motions'  const ComponentFadeIn = (   <FadeIn duration={2} infinite>     Let's fadeIn here   </FadeIn> )

Function

Return a React Component with FadeIn animation (1s duration)

import { withFadeIn } from 'react-motions'  const ComponentWithFadeIn = withFadeIn(<div>Let's fadeIn here</div>)

FadeOut

Component

Render a React Component with FadeOut animation (2s duration and iterationCount infinite)

import { FadeOut } from 'react-motions'  const ComponentFadeOut = (   <FadeOut duration={2} infinite>     Let's fadeOut here   </FadeOut> )

Function

Return a React Component with FadeOut animation (1s duration)

import { withFadeOut } from 'react-motions'  const ComponentWithFadeOut = withFadeOut(<div>fadeOut here</div>)

Flash

Component

Render a React Component with Flash animation (2s duration and iterationCount infinite)

import { Flash } from 'react-motions'  const ComponentFlash = (   <Flash duration={2} infinite>     Let's flash here   </Flash> )

Function

Return a React Component with Flash animation (1s duration)

import { withFlash } from 'react-motions'  const ComponentWithFlash = withFlash(<div>Flash! Flash!</div>)

Jello

Component

Render a React Component with Jello animation (2s duration and iterationCount infinite)

import { Jello } from 'react-motions'  const ComponentJello = (   <Jello duration={2} infinite>     Let's jello here   </Jello> )

Function

Return a React Component with Jello animation (1s duration)

import { withJello } from 'react-motions'  const ComponentWithJello = withJello(<div>Jelloooool</div>)

Pulse

Component

Render a React Component with Pulse animation (2s duration and iterationCount infinite)

import { Pulse } from 'react-motions'  const ComponentPulse = (   <Pulse duration={2} infinite>     Let's pulse here   </Pulse> )

Function

Return a React Component with Pulse animation (1s duration)

import { withPulse } from 'react-motions'  const ComponentWithPulse = withPulse(<div>Let's pulse here</div>)

RubberBand

Component

Render a React Component with RubberBand animation (2s duration and iterationCount infinite)

import { RubberBand } from 'react-motions'  const ComponentRubberBand = (   <RubberBand duration={2} infinite>     Let's rubberBand here   </RubberBand> )

Function

Return a React Component with rubberBand animation (1s duration)

import { withRubberBand } from 'react-motions'  const ComponentWithRubberBand = withRubberBand(<div>rubberBand!</div>)

Shake

Component

Render a React Component with Shake animation (2s duration and iterationCount infinite)

import { Shake } from 'react-motions'  const ComponentShake = (   <Shake duration={2} infinite>     Let's shake here   </Shake> )

Function

Return a React Component with Shake animation (1s duration)

import { withShake } from 'react-motions'  const ComponentWithShake = withShake(<div>Let's shake here</div>)

Swing

Component

Render a React Component with Swing animation (2s duration and iterationCount infinite)

import { Swing } from 'react-motions'  const ComponentSwing = (   <Swing duration={2} infinite>     Let's swing here   </Swing> )

Function

Return a React Component with Swing animation (1s duration)

import { withSwing } from 'react-motions'  const ComponentWithSwing = withSwing(<div>Swing!</div>)

Tada

Component

Render a React Component with Tada animation (2s duration and iterationCount infinite)

import { Tada } from 'react-motions'  const ComponentTada = (   <Tada duration={2} infinite>     Let's tada here   </Tada> )

Function

Return a React Component with Tada animation (1s duration)

import { withTada } from 'react-motions'  const ComponentWithTada = withTada(<div>Tadaaaan!</div>)

Wobble

Component

Render a React Component with Wobble animation (2s duration and iterationCount infinite)

import { Wobble } from 'react-motions'  const ComponentWobble = (   <Wobble duration={2} infinite>     Let's wobble here   </Wobble> )

Function

Return a React Component with Wobble animation (1s duration)

import { withWobble } from 'react-motions'  const ComponentWithWobble = withWobble(<div>Wobble!</div>)

Roadmap

  • withSequence
  • compose
  • Create handler props on Components for bind Animation Hooks
  • Allows to configure animation property on HOC

Credits

A thanks to Animate.css for all animations.

Created by Raphael Amorim.


You May Also Like