Also called Collapse, Disclosure, Expandable section
A content panel smoothly grows to its full height or shrinks to zero when its header is toggled.
Use for
FAQs, settings groups, sidebar trees
Add an "Accordion Expand-Collapse" effect (also called a collapse or disclosure) to [where].
When a header is pressed, its panel should smoothly grow to the full height of its content and shrink back to nothing on the next press, with the header's arrow turning to match: quick and smooth, no bounce.
Animate to the content's real height rather than a fixed guess, keep the header a real button that exposes its expanded state, and make it work from the keyboard.
Also called Overlay fade, Scrim
A translucent dark layer fades in behind an overlay to dim the page.
Use for
Behind modals, drawers, sheets
Add a "Backdrop Scrim Fade" (also called an overlay fade or scrim) to [where].
When the overlay opens, a translucent dark layer should fade in softly over the page behind it, a little slower than the overlay itself, and fade out again when it closes.
Keep the scrim dark in both light and dark themes, and stop the page behind it from scrolling or taking clicks while it is shown.
Also called Bottom drawer, Sheet
A panel slides up from the bottom edge, often draggable and snapping to heights.
Use for
Mobile actions, share menus, filters
Add a "Bottom Sheet Slide-Up" (also called a bottom drawer or sheet) to [where].
The panel should slide up from the bottom edge while the page behind it dims, decelerating smoothly into place without a bounce.
Play it once each time the sheet opens, slide it back down on close, and keep keyboard focus inside the sheet while it is open.
Also called Fade slideshow, Carousel fade
Slides stay in place and dissolve into each other instead of sliding.
Use for
Hero slideshows, testimonials
Add a "Carousel Crossfade" (also called a fade slideshow or carousel fade) to [where].
Slides should stay in place and slowly dissolve into one another, the old one fading out while the next fades in at the same time, then hold for a few seconds before the next change.
Loop seamlessly back to the first slide, pause on hover or focus, and don't auto-advance for users who prefer reduced motion.
Also called Slider, Swipe carousel, Scroll-snap carousel
Slides move horizontally past a viewport, snapping one item into place at a time.
Use for
Hero banners, product galleries
Add a "Carousel Slide" (also called a slider or swipe carousel) to [where].
Each step should slide the row sideways so the next slide snaps into the center, smooth and decelerating, with the neighbours peeking at the edges and the position dots following along.
Move one slide at a time, support swipe on touch as well as buttons and arrow keys, and keep the controls labelled for screen readers.
Also called Card expand to detail, Expandable card, Morph card to page
A card grows into a full detail view, keeping one visible container that reshapes and reveals new content.
Use for
List card to detail, FAB to sheet
Add a "Container Transform" transition (also called card expand to detail or an expandable card) to [where].
When the card is opened, the same container should grow smoothly into the full detail view, its old content fading out quickly and the new content fading in once it has nearly finished growing; closing plays it in reverse.
Keep it one continuous container rather than a crossfade between two separate boxes, and move focus into the detail view when it opens.
Also called Reorder, Sortable list
Dragging an item makes others slide out of the way and settle in the new order.
Use for
Kanban, sortable settings, playlists
Add a "Drag-to-Reorder List" (also called a sortable list) to [where].
The dragged item should follow the pointer directly and lift slightly, while the other items slide smoothly out of its way; on release it should settle quickly into the nearest slot.
Support touch as well as mouse, and offer a keyboard way to move items with the new position announced to screen readers.
Also called Off-canvas, Side sheet, Slide-over, Navigation drawer
A side panel slides in from the left, right or top edge, pushing or overlaying content.
Use for
Mobile nav, settings panels, carts
Add a "Drawer Slide" (also called off-canvas or a side sheet) to [where].
The panel should slide in from the side edge over the content while the page behind dims, quick and smoothly decelerating, and slide back out the same way when closed.
Keep keyboard focus inside the open drawer, close it with Escape or a click on the dimmed area, and return focus to the button that opened it.
Also called Layout animation, First-Last-Invert-Play
Elements glide smoothly to their new positions and sizes after the layout changes.
Use for
Filtering grids, reflowing lists
Add a "FLIP Layout Animation" (also called a layout animation or First-Last-Invert-Play) to [where].
When the layout changes, each element should glide from its old position to its new one instead of jumping, quick at first and easing gently into place.
Animate with transforms only so the page doesn't reflow on every frame, and switch straight to the new layout for users who prefer reduced motion.
Also called AnimatePresence, TransitionGroup, Animated list
Items fade and slide in when added and animate out when removed while neighbours close the gap.
Use for
Todo lists, notifications, cart items
Add a "List Item Enter/Exit" animation (also called an animated list) to [where].
A new item should first open up its space and then fade and slide in; a removed item should fade out first and then collapse so its neighbours close the gap smoothly.
Keep a removed item in place until its exit has finished, so the list never jumps when items are added or removed.
Also called Ticker, Infinite Scroll Text
A row of content slides sideways in an endless, seamless loop.
Use for
Logo walls, announcements, keyword bands and news tickers
Add a "Marquee" (an infinite horizontal scroll, also called a ticker) to [where].
The content should slide from right to left at a slow, steady speed in a seamless loop with no visible jump.
Pause it on hover, and stop the motion when the user prefers reduced motion (prefers-reduced-motion).
Also called Isotope filter, Filterable grid animation
Grid tiles rearrange, fade out or slide into new slots when a filter or sort is applied.
Use for
Portfolio filters, galleries
Add a "Masonry / Grid Shuffle" effect (also called a filterable grid animation) to [where].
When a filter is applied, the tiles that no longer match should shrink and fade out in place while the remaining tiles slide smoothly into their new slots; clearing the filter plays it back.
Keep the surrounding page from jumping while the grid changes height, and make the filter controls real buttons that expose which filter is selected.
Also called Dialog open animation, Zoom-fade dialog
A dialog fades in while scaling up slightly from its center over a dimmed page.
Use for
Confirm dialogs, forms in overlays
Add a "Modal Scale-Fade In" animation (also called a dialog open animation or zoom-fade dialog) to [where].
The dialog should fade in while scaling up slightly from its center as the page behind it dims: quick and subtle, with no bounce.
Play it once each time the dialog opens, move focus into it and keep it there, and use a plain fade for users who prefer reduced motion.
Also called Menu pop, Popover pop-in, Dropdown scale-fade
A floating menu fades and scales in from the point where its trigger sits.
Use for
Dropdown menus, popovers, select lists
Add a "Popover / Dropdown Open" animation (also called a menu pop or dropdown scale-fade) to [where].
The menu should fade in while growing slightly out of the corner next to its trigger, quick and crisp, and fade out a little faster when it closes.
Keep it anchored to the trigger, close it with Escape or a click outside, and expose the open state on the trigger for screen readers.
Also called layoutId, Shared element (in-page)
An element appears to move and resize into a matching element in a new spot, sharing one identity.
Use for
Selected highlight, thumbnail to expanded view
Add a "Shared Layout Animation" (also called an in-page shared element) to [where].
When the selection changes, the element should appear to move and resize smoothly from its old spot into its new one, easing gently into place, so it reads as one object rather than two.
Show only one copy at any moment, and keep the surrounding layout from jumping while it moves.
Also called Sliding underline, Active tab indicator, Segmented control pill
An underline or pill glides from the old tab to the newly selected tab.
Use for
Tab bars, segmented controls
Add a "Tab Indicator Slide" (also called a sliding underline or active tab indicator) to [where].
When a new tab is selected, the underline should glide from the old tab to the new one, quick and smoothly decelerating, stretching to the new tab's width if it differs.
Keep proper tab semantics with arrow-key navigation, and move the indicator without sliding for users who prefer reduced motion.
Also called Snackbar, Toast notification, Toast stack
A brief message slides or fades in at a screen edge, waits, then leaves; stacked toasts shift to make room.
Use for
Save confirmations, errors, undo prompts
Add a "Toast Slide-In" (also called a snackbar or toast notification) to [where].
Each message should slide up from the screen edge and fade in, decelerating smoothly; when a new toast arrives, the ones already shown should shift over smoothly to make room.
Announce the message to screen readers without stealing focus, keep it up long enough to read, and pause the auto-dismiss on hover or focus.
Also called Tooltip reveal
A small label fades and nudges into place next to an element after a short hover delay.
Use for
Icon hints, truncated text
Add a "Tooltip Fade" (also called a tooltip reveal) to [where].
After a short hover delay, the label should fade in while nudging slightly into place next to the element, then disappear quickly with no delay when the pointer leaves.
Show it on keyboard focus too, let Escape dismiss it, and connect it to the element so screen readers read it.