Fade in / Fade out
The element appears or disappears by changing opacity.
A toast notification that appears and fades away on its own.
The dictionary of the most common animation patterns: use these names to describe to the AI the motion you want when you do vibe coding. Every entry has a live preview.
Inspired by the excellent work of Emil Kowalski · animations.dev, with a preview added to every entry.
The same vocabulary also exists as a skill you can install in your agent: here you look the names up, there it already knows them.
91 terms
How elements appear and disappear.
The element appears or disappears by changing opacity.
A toast notification that appears and fades away on its own.
The element slides in from off-screen (from the left, right, top, or bottom).
A side panel that slides in from the right on click.
The element grows from small to full size as it appears, often paired with a fade.
A card that grows as it opens its detail view.
The element appears with a slight overshoot, as if it bounced into place.
A new-notification badge that pops in playfully.
The content is gradually uncovered, often by animating a clip-path or a mask.
A hero image that reveals itself from left to right.
The animation an element plays when it's added to or removed from the screen.
List items that enter and exit as you filter.
Coordinating multiple elements or moments.
Defined points in an animation (0%, 50%, 100%) that the browser fills in between.
A logo that bounces between several defined poses.
Generating every in-between frame between a start and end value, so the motion is continuous.
A progress bar that glides smoothly to its target.
Animating multiple elements one after another with a small delay between each, creating a cascade.
Menu items that appear one after another.
Deliberately timing multiple animations so they read as one coordinated movement.
Hero, title, and CTA entering in a coordinated sequence.
The time before an animation starts.
A tooltip that appears after half a second's wait.
How long an animation lasts.
A slow, soft accordion instead of an instant one.
Whether an element keeps the styles of its first or last frame before or after the animation (e.g. forwards).
An element that stays in its final position once the animation ends.
An animation split into discrete steps, like a countdown timer.
A countdown that jumps second by second.
Changing an element's position, size, or angle.
Moving an element along the X or Y axis.
A button that shifts over to make room for a menu.
Making an element bigger or smaller.
A thumbnail that grows on hover.
Rotating an element around a point.
A menu icon that rotates into an X.
Tilting an element along the X or Y axis, distorting it out of its rectangular shape.
A promo banner tilted for extra energy.
Rotating in 3D space (rotateX / rotateY) to add depth.
A card that flips to show its back.
How strong the 3D effect looks: a low value exaggerates depth, as if the viewer were standing closer.
A cover that tilts in 3D as it follows the cursor.
The anchor point a scale or rotation grows or turns from.
A tooltip that grows from its corner instead of its center.
The element animates starting from whatever triggered it, like a popover that grows from the button that opened it instead of from its own center.
A popover that bursts open from the button that triggered it.
Connecting one state, view, or element to another.
One element fades out while another fades in, in the same spot.
Two gallery photos dissolving into each other.
A change that keeps the user oriented by visually linking before and after, for example growing and shrinking the same rectangle.
A card that expands while keeping its shape.
A shape smoothly transforms into another, like the Dynamic Island.
The Dynamic Island widening for an incoming call.
An element travels and transforms from one position to another, like a thumbnail expanding into a full card.
A thumbnail that becomes the full-screen cover.
When an element's size or position changes, it animates to the new spot instead of snapping there.
Grid cards that reposition themselves when reordered.
A section smoothly expands and collapses its height to show or hide content.
An FAQ that opens and closes its answer.
Content slides one way going forward and the opposite way going back, giving navigation a sense of direction.
Slides that move forward or back depending on the key pressed.
Motion tied to scrolling or to navigating between views.
Elements fade or slide into place as they enter the viewport.
Sections appearing as you scroll down the landing page.
An animation whose progress is tied directly to the scroll position.
A reading-progress bar that fills as you scroll.
Background and foreground move at different speeds while scrolling, creating depth.
A background that scrolls slower than the foreground.
An animation that plays when navigating from one page or route to another.
A crossfade between one page and the next.
The browser morphs between two states or pages, linking their shared elements.
An article that opens from its preview in the feed.
Responding to the user’s actions. (Hover over the previews.)
A visual change when the cursor passes over an element.
A button that lights up on hover.
A slight shrink on click, so the element feels physical.
A key that presses down slightly on click.
A progress effect that fills up while the user holds down a button.
A 'Delete' button you hold down to confirm.
Moving an element by grabbing it, often with inertia on release.
A photo you drag to move it on the canvas.
Dragging items in a list to reorder them, while the others shift to make room.
A to-do list you reorder by dragging its items.
Dragging an element off-screen to dismiss it, like a drawer or a toast.
A notification you dismiss by swiping it away.
Resistance and an elastic snap-back when you drag past a limit (the iOS overscroll feel).
A list that bounces back when you scroll past the bottom.
A quick side-to-side wobble that signals an error or a rejected input.
A password field that shakes when the password is wrong.
A circle that expands from the point of touch, confirming the press.
The wave that spreads out from where you tap a button.
How speed changes over the course of an animation.
The rhythm with which an animation speeds up or slows down.
A menu that starts fast and eases gently to a stop.
Starts fast, ends slow. The default for most UI and for anything responding to the user.
A panel that enters fast and settles calmly.
Starts slow, ends fast. Usually avoided: it can feel sluggish.
An element that exits the scene picking up speed.
Slow, fast, slow. Good for elements already on screen moving from A to B.
A box that glides smoothly from one side to the other.
Constant speed. Avoid it in UI; reserve it for spinners or marquees.
A spinner turning at a constant speed.
A custom easing curve you define for precise control.
A custom transition with a small overshoot.
A curve that speeds up and slows down at different rates. It reads as more alive than a symmetric one.
A movement that starts slow and brakes sharply.
Physics-based motion, an alternative to fixed-duration easing.
Motion driven by physics (tension, mass, damping) instead of a fixed duration.
A panel that enters with a natural bounce.
How strongly the spring pulls toward its target. Higher means snappier.
A snappy menu that reaches its position instantly.
How quickly a spring settles. Low damping means more bounce and oscillation.
A toggle that wobbles briefly before settling.
How heavy the animated element feels. More mass makes it slower and lazier.
A heavy element that moves slow and deliberate.
A spring that overshoots its target and settles back, adding playfulness.
An emoji that lands on screen with a bounce.
How finished a spring feels, even while it's still micro-settling underneath.
A spring that looks still but is still settling.
Motion that carries its velocity forward, especially after a drag or an interruption.
A list that keeps scrolling after the swipe.
How fast and in what direction an element is moving. A spring carries it into the next animation when interrupted.
A flicked element that keeps its momentum.
An animation that can be smoothly redirected midway instead of finishing first.
A menu that changes course if you close it halfway.
Animations that run on their own.
Text or content that scrolls continuously in a loop.
A strip of client logos scrolling continuously.
An animation that repeats, either a set number of times or forever.
A loading icon that spins forever.
A loop that runs forward then backward on each cycle, instead of snapping back to the start.
A 'scroll down' arrow that moves up and down.
An element circling around another along a continuous path.
Dots orbiting around a loader.
A gentle, repeated change in scale or opacity to draw attention.
A notification dot that pulses to catch the eye.
A slow, continuous up-and-down drift that makes a static element feel alive and light.
An illustration floating lightly in the hero.
Subtle motion that plays while an element just sits there, waiting to be interacted with.
A character breathing while it waits for input.
The small touches that separate good from great.
A blur filter used to soften an element or hide small imperfections.
The background blurring when you open a modal.
Clipping an element into a shape, used for reveals, masks, and before/after sliders.
A diamond-clipped image that changes shape.
Hiding or revealing parts of an element with a shape or gradient — like clip-path, but with soft, fadeable edges.
Text revealed by a sheen passing over it.
A draggable divider that transitions between two overlapping images so you can compare them.
A before/after comparison of a retouched photo.
An SVG path that draws itself, as if traced by an invisible pen.
A signature or icon that draws itself.
Text that animates character by character as it changes, drawing attention to the new value.
A price that changes with its digits animating.
A placeholder with a moving sheen, shown while the content loads.
Shimmering placeholders while the feed loads.
Digits that spin or climb up to a value.
A subscriber counter climbing up to its total.
Fixed-width digits so numbers don't jump around as they change. Essential for tickers, timers, and counters.
A timer that doesn't jitter as its numbers change.
Text that appears one character at a time, as if being typed.
A headline typed out character by character.
What keeps motion smooth instead of janky.
Frames drawn per second. 60fps is the baseline for smooth motion; 120fps on newer displays.
Smooth motion at 60fps with no stutter.
Visible stutter when the browser drops frames because it can't keep up with the animation.
The stutter you want to avoid when an animation struggles to keep up.
A frame the browser failed to draw in time, causing a small hiccup in the motion.
The hiccup when the browser skips a frame.
Letting the GPU move or fade an element on its own layer without redoing layout or paint.
Moving an element via the GPU without repainting.
A CSS hint that an element is about to animate, so the browser can promote it to its own layer ahead of time.
Warning the browser that a menu is about to open.
Animating properties like width, height, top, or left, which force the browser to recompute layout every frame, causing jank.
The mistake of animating width instead of transform.
Concepts that guide when and how to animate.
Motion should serve a function — orienting, giving feedback, showing relationships — not just decorate.
An animation that guides the eye, not just decorates.
A small wind-up in the opposite direction before a movement, hinting at what's about to happen.
A small wind-up before an element launches.
Parts of an element keep moving and settle slightly after the main motion stops, adding weight.
A tail that keeps moving after everything else stops.
Distorting an element as it moves to convey weight, speed, and flexibility.
A ball that squashes as it bounces.
The right animation makes an interface feel faster, even when it isn't.
A skeleton screen that makes loading feel faster.
The more often a user sees an animation, the shorter and subtler it should be.
A short animation because you see it a thousand times a day.
Animating so an element keeps its identity and position across states, so the user never loses track of where things are.
A menu that always returns to where it came from.
Animating transform and opacity lets the GPU keep the motion smooth.
Animating transform and opacity to stay smooth.
Respecting the user's prefers-reduced-motion setting by toning down or removing motion.
Turning off motion for people who get motion sickness.
Try another term, like "spring", "fade" or "scroll".
Keep exploring
Guides, courses and tools picked for you, starting from this page.
Search Console data inside your terminal.
Deploy on Vercel with no jargon: turn the project sitting on GitHub into a public link you can send anyone, then add your own domain on top.
The sheet to bring to the call
A vague brief becomes a navigable app.
Built a project with Claude Code or Codex? Learn to put it on GitHub, roll back changes when things break, and bring other people in to help.
AI skills for designers