framer-motion

Framer Motion Animation Principles

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "framer-motion" with this command: npx skills add dylantarre/animation-principles/dylantarre-animation-principles-framer-motion

Framer Motion Animation Principles

Implement all 12 Disney animation principles using Framer Motion's declarative React API.

  1. Squash and Stretch

<motion.div animate={{ scaleX: [1, 1.2, 1], scaleY: [1, 0.8, 1] }} transition={{ duration: 0.3, times: [0, 0.5, 1] }} />

  1. Anticipation

<motion.div variants={{ idle: { y: 0, scaleY: 1 }, anticipate: { y: 10, scaleY: 0.9 }, jump: { y: -200 } }} initial="idle" animate={["anticipate", "jump"]} transition={{ duration: 0.5, times: [0, 0.2, 1] }} />

  1. Staging

<motion.div animate={{ filter: "blur(3px)", opacity: 0.6 }} /> {/* bg /} <motion.div animate={{ scale: 1.1, zIndex: 10 }} /> {/ hero */}

  1. Straight Ahead / Pose to Pose

<motion.div animate={{ x: [0, 100, 200, 300], y: [0, -50, 0, -30] }} transition={{ duration: 1, ease: "easeInOut" }} />

  1. Follow Through and Overlapping Action

<motion.div animate={{ x: 200 }} transition={{ duration: 0.5 }}> <motion.span animate={{ x: 200 }} transition={{ duration: 0.5, delay: 0.05 }} // hair /> <motion.span animate={{ x: 200 }} transition={{ duration: 0.6, delay: 0.1 }} // cape /> </motion.div>

  1. Slow In and Slow Out

<motion.div animate={{ x: 300 }} transition={{ duration: 0.6, ease: [0.42, 0, 0.58, 1] // easeInOut cubic-bezier }} /> // Or use: "easeIn", "easeOut", "easeInOut"

  1. Arc

<motion.div animate={{ x: [0, 100, 200], y: [0, -100, 0] }} transition={{ duration: 1, ease: "easeInOut" }} />

  1. Secondary Action

<motion.button whileHover={{ scale: 1.05 }} whileTap={{ scale: 0.95 }}

<motion.span animate={{ rotate: [0, 10, -10, 0] }} transition={{ duration: 0.3 }}

Icon

</motion.span> </motion.button>

  1. Timing

const timings = { fast: { duration: 0.15 }, normal: { duration: 0.3 }, slow: { duration: 0.6 }, spring: { type: "spring", stiffness: 300, damping: 20 } };

  1. Exaggeration

<motion.div animate={{ scale: 1.5, rotate: 720 }} transition={{ type: "spring", stiffness: 200, damping: 10 // low damping = overshoot }} />

  1. Solid Drawing

<motion.div style={{ perspective: 1000 }} animate={{ rotateX: 45, rotateY: 30 }} transition={{ duration: 0.5 }} />

  1. Appeal

<motion.div whileHover={{ scale: 1.02, boxShadow: "0 20px 40px rgba(0,0,0,0.2)" }} transition={{ duration: 0.3 }} />

Stagger Children

const container = { hidden: { opacity: 0 }, show: { opacity: 1, transition: { staggerChildren: 0.1 } } };

<motion.ul variants={container} initial="hidden" animate="show"> {items.map(item => <motion.li variants={itemVariant} />)} </motion.ul>

Key Framer Motion Features

  • animate

  • Target state

  • variants

  • Named animation states

  • whileHover / whileTap

  • Gesture animations

  • transition

  • Timing and easing

  • AnimatePresence

  • Exit animations

  • useAnimation

  • Programmatic control

  • layout

  • Auto-animate layout changes

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

mobile-touch

No summary provided by upstream source.

Repository SourceNeeds Review
General

motion-designer

No summary provided by upstream source.

Repository SourceNeeds Review
General

video-motion-graphics

No summary provided by upstream source.

Repository SourceNeeds Review
General

micro-interactions

No summary provided by upstream source.

Repository SourceNeeds Review