What is framer-motion?
The framer-motion npm package is a popular library for creating animations and transitions in React applications. It provides a powerful and easy-to-use set of tools for animating components, handling gestures, and creating complex motion effects with simple declarative syntax.
What are framer-motion's main functionalities?
Basic Animations
Animate the horizontal position of a component to 100 pixels.
{"<motion.div animate={{ x: 100 }} />"}
Variants
Use variants to define animation states and transition between them.
{"<motion.div variants={variants} initial='hidden' animate='visible' />"}
Gestures
Scale a button up on hover and down on tap.
{"<motion.button whileHover={{ scale: 1.1 }} whileTap={{ scale: 0.9 }} />"}
Drag
Make a component draggable.
{"<motion.div drag />"}
Shared Layout Animations
Animate layout changes between components that share a layoutId.
{"<motion.ul layout><motion.li layoutId='id' /></motion.ul>"}
Exit Animations
Animate the component out when it's removed from the React tree.
{"<motion.div exit={{ opacity: 0 }} />"}
Other packages similar to framer-motion
react-spring
React-spring is a spring-physics based animation library that allows for a wide range of animations in React applications. It is similar to framer-motion in that it provides a way to create animations, but it uses spring physics for a more natural motion. React-spring is more focused on physics-based animations, whereas framer-motion offers a wider range of animation utilities, including gesture handling and drag.
react-motion
React-motion is another animation library for React that provides a powerful way to create animations using spring configurations. It is less declarative and more configuration-based compared to framer-motion, which might be preferred by developers who want more control over the animation physics.
gsap
GSAP (GreenSock Animation Platform) is a robust JavaScript animation library that works well with React and other frameworks. It is not specifically designed for React like framer-motion, but it offers a wide range of animation capabilities and fine-grained control over animations. GSAP is known for its performance and flexibility, but it has a steeper learning curve compared to framer-motion.
animejs
Anime.js is a lightweight JavaScript animation library that can be used with any web framework, including React. It is similar to framer-motion in terms of providing a simple API for animations, but it does not offer React-specific features like framer-motion does. Anime.js is a good choice for developers looking for a general-purpose animation library that is easy to use and extend.
Framer Motion
An open source and production-ready motion
library for React on the web.
Framer Motion is an open source, production-ready library that's designed for all creative developers.
It looks like this:
<motion.div animate={{ x: 0 }} />
It does all this:
- Springs
- Keyframes
- Layout animations
- Shared layout animations
- Gestures (drag/tap/hover)
- SVG paths
- Exit animations
- Server-side rendering
- Orchestrate animations across components
- CSS variables
...and a whole lot more.
Get started
๐ Quick start
npm install framer-motion
import { motion } from "framer-motion"
export const MyComponent = ({ isVisible }) => (
<motion.div animate={{ opacity: isVisible ? 1 : 0 }} />
)
๐ Docs
Check out our documentation for guides and a full API reference.
Or checkout our examples for inspiration.
๐ Contribute
Want to contribute to Framer Motion? Our contributing guide has you covered.
๐ฉ๐ปโโ๏ธ License
Framer Motion is MIT licensed.
Framer
Get on the same page as your designers before production. Get started with design and prototyping in Framer.