i

Motion

1 · 6 meanings

A motion is not an effect. It is an assertion about what just happened — that something is new, that it is gone, that these two things are one thing — and like any assertion it can be false. This floor collects the ones that carry meaning and states what each of them claims.

House rule: every motion here ships with the case against it, with what changes on a device that cannot hover, and with what it does for a reader who has asked for less motion. The build refuses an entry missing any of the three.

Nothing on this page moves until you press play. If your system is set to reduce motion, the demonstrations do not animate at all — they show their end state, and the buttons say so. No motion here is the only carrier of anything: each is captioned in words, and every entry is complete without it.

MTN·01·001

Arrival

traditional

Something is here now that was not here a moment ago — attend to it, and know that it came from the system rather than from you scrolling past it.

Arrival is the least contested motion in interface design and the one most often spent badly. Its job is a single assertion: this was not here before. A fade with a short rise carries that in about a quarter of a second, and anything longer starts to read as ceremony.

The rise matters more than the fade. Movement from below suggests the element is entering the layout rather than materialising on top of it, which is why the same fade with no translation feels like a spinner finishing and the fade-with-rise feels like something arriving. Fourteen pixels is plenty; thirty is a swoop.

The failure is volume, not craft. An arrival animation applied to every element of a page turns a load into a performance, and the reader pays its duration whether or not they were looking.

Arrival, played once on request.
Duration
200–300ms
Easing
Decelerating (cubic-bezier(0, 0, .2, 1)) — fast at the start, settling at the end, so the element appears to be arriving rather than being pushed.

Use when

  • Content appears in response to something the reader did — a result, a toast, a newly added row
  • The new thing is not where the reader is already looking, and needs to claim a moment of attention
  • Several things arrive at once and a small stagger tells the reader they are a set

Avoid when

  • The content was already on the page and is only becoming visible — that is reveal, and animating it as arrival implies it is new when it is not
  • The reader is waiting: an arrival animation on a page load adds its duration to a wait they can already feel
  • Everything arrives. If every element on a screen animates in, nothing has claimed attention and the page has simply become slower
Without a pointerIdentical on both. Arrival is the one motion that does not depend on a pointer at all, which is why it is the safest thing to animate and the first thing worth getting right.
Under reduced motionNothing moves. The element is simply present at full opacity. Arrival is the easiest meaning to carry without motion, because position and presence already say it.
SourcesMaterial Design motion guidance on enter transitions and easing; Apple Human Interface Guidelines on motion; WCAG 2.2 SC 2.3.3 Animation from Interactions (AAA) for the reduced-motion obligation.

Why traditional: The 200–300ms band and decelerating easing are consistent across the major platform guidelines and long practice, but no measured result establishes them. Only the reduced-motion behaviour is documented — that one is WCAG.

MTN·01·002

Dismissal

traditional

This is going away, and it is going away because of something that just happened — usually something you did. The exit is an acknowledgement, not a disappearance.

Dismissal is arrival run backwards, and it should be faster. The asymmetry is the whole rule: entering, an element is asking for attention it has not yet earned; leaving, the reader has already given the instruction and is waiting for the interface to catch up.

The scale-down matters. Fading alone reads as something becoming transparent — still present, just less so. A fade with a slight contraction reads as departure, because things that leave get smaller. Going the other way, scaling up while fading out, is the standard vocabulary for something being consumed or absorbed rather than dismissed, which is why it is right for a photo closing back into its thumbnail and wrong for a toast.

The trap is chaining. When a dismissal must complete before the next screen can start, its duration stops being an acknowledgement and becomes a delay, and the reader learns to wait rather than to read.

Dismissal, played once on request.
Duration
150–200ms
Easing
Accelerating (cubic-bezier(.4, 0, 1, 1)) — slow to leave, then quick, so the element reads as departing rather than being deleted mid-frame.

Use when

  • The reader dismissed something themselves and the exit confirms the act landed
  • A transient thing has finished its job — a toast that has been read, a tooltip whose target has been left
  • Something is being deleted and the motion is the last chance to notice it before it is gone

Avoid when

  • The exit is longer than the entrance. A dismissal should be quicker than the arrival that preceded it — the reader has already decided
  • The element is being replaced in place. Animating out and then in reads as two events when one thing happened
  • It delays the next thing. An exit that has to finish before the reader can act again has turned an acknowledgement into a queue
Without a pointerThe same on both, but the trigger differs: on a pointer device dismissal usually follows a click on a close control, and on touch it frequently follows a swipe, where the motion must pick up from where the finger left off rather than restarting.
Under reduced motionThe element is removed with no transition. Dismissal loses least of all the motions when it is taken away, because the absence of the thing is itself unambiguous.
SourcesMaterial Design exit transition guidance, which specifies shorter exits than entrances; Apple HIG on transient views; WCAG 2.2 SC 2.2.2 Pause, Stop, Hide for anything that persists.

Why traditional: The exit-shorter-than-entrance rule is stated by the platform guidelines and is long practice, but it is a design convention rather than a measured result.

MTN·01·003

Origin

traditional

This came from there. The thing you are now looking at is the same object as the thing you just pressed, expanded — not a new screen that happens to contain similar content.

Origin is the most expensive motion here and the only one that carries an argument rather than a signal. Arrival says new; dismissal says gone; origin says these two things are one thing, which is a claim about the structure of the interface and can therefore be false.

That is what makes it worth having and what makes it dangerous. A card that expands into its own detail view teaches the reader the hierarchy in a way no breadcrumb does. The same animation applied between two unrelated screens teaches them that the animation is decorative — and once learned, that lesson applies to every transition afterwards, including the honest ones.

The platform has caught up: the View Transitions API is the browser offering to do this natively rather than each application reimplementing it. Which means the interesting question is no longer whether it can be done, but whether the relationship being drawn is real.

Origin, played once on request.
Duration
300–400ms
Easing
Emphasised (cubic-bezier(.2, 0, 0, 1)) — a strong deceleration, because the element is travelling a real distance and must arrive settled rather than skidding.

Use when

  • The destination genuinely contains the thing that was pressed — a card opening into its own detail view, a thumbnail into its photograph
  • The reader will come back, and the return journey reversed makes the hierarchy legible
  • The alternative is a full page change that loses the reader’s sense of where they were

Avoid when

  • The destination is not the same object. Animating one thing into an unrelated thing is a lie told smoothly, and it teaches the reader that the motion means nothing
  • The journey is long and the screen is large — a transition that crosses a desktop monitor is a distraction, not a connection
  • It cannot be reversed. A connection drawn on the way in and absent on the way out is worse than never drawing it
Without a pointerThis is the motion that differs most between devices. On touch, the origin is the reader’s own finger and the connection is obvious. With a mouse, the pointer has usually already moved away by the time the transition runs, so the motion is doing all the work of the connection on its own — and on a large screen the distance travelled can be enough that the transition needs to be shortened rather than scaled up.
Under reduced motionA cross-fade, or nothing at all. The relationship must then be carried by layout and labelling: the destination has to name what it came from, because the reader will not have seen the connection drawn.
SourcesMaterial Design container transform guidance; Apple HIG on navigational transitions; the View Transitions API, which is the platform’s own implementation of the same idea.

Why traditional: Widely specified by the platform guidelines and now supported by a browser API, but the claim that the connection aids comprehension is design convention rather than a measured finding.

MTN·01·004

Progress

documented

The system is working, and — if the motion is honest — this is how much of the work is done. It is the only motion here whose job is to be looked at rather than noticed.

Progress is the only motion in this gallery that a reader is meant to watch, and the only one that can be dishonest in a way they can catch. A determinate bar makes a claim about how much work remains. If that claim is invented — a fixed animation that fills over three seconds regardless of the work — the reader will eventually see it sit at a hundred per cent while nothing happens, and every progress bar in the product loses its credibility at once.

The threshold for showing anything at all comes from the response-time literature this building already keeps upstairs: under about a tenth of a second an interface feels instantaneous and needs no indicator; up to about a second, thought is uninterrupted; past that, the reader needs to be told the system is still there. A spinner that appears for two hundred milliseconds is answering a question nobody asked.

Under reduced motion this entry has the hardest problem in the gallery. A spinner cannot simply be stopped — a frozen spinner is the universal signal of a hung application. The substitute has to be a state that changes without moving.

Progress, played once on request.
Duration
as long as the work
Easing
Linear. Progress is the one case where easing is wrong: an accelerating bar claims the work is speeding up, and a decelerating one claims it is stalling.

Use when

  • The wait is longer than about a second and the reader would otherwise wonder whether their action registered
  • The work has a knowable size, in which case the bar should be determinate — a real proportion, not an animation that fills at a fixed rate
  • Failure is possible and the indicator can carry the error when it arrives, rather than vanishing and leaving nothing

Avoid when

  • The wait is under a few hundred milliseconds. A spinner that flashes for 200ms makes a fast interface look broken
  • The bar is fake — a fixed-duration animation that has no relationship to the work. It will finish before the work does, and then it is lying while the reader watches
  • A skeleton would say more. Where the shape of the arriving content is known, a skeleton screen tells the reader what is coming as well as that something is
Without a pointerThe same on both, but the tolerance is not. A wait a reader will sit through at a desk is a wait they will abandon on a phone, where the connection is worse and the session is shorter — so the threshold for showing determinate progress rather than a spinner is lower on mobile.
Under reduced motionA spinner is animation and must not simply be frozen — a stopped spinner reads as a crash. Under reduced motion the honest substitute is a static, textual state that updates: Loading…, or a percentage that changes without sliding.
SourcesCard, Robertson & Mackinlay and Nielsen on the 0.1 / 1 / 10 second response thresholds — see the Stairwell; WCAG 2.2 SC 2.2.2 Pause, Stop, Hide; SC 4.1.3 Status Messages for announcing progress to assistive technology.

Why documented: The response-time thresholds that govern when progress must be shown are a published result and are already in this building’s Stairwell. The visual conventions on top of them are craft.

MTN·01·005

Rejection

documented

No. That input was not accepted, and it was not accepted here — the motion points at the field as well as refusing it.

The shake is the only motion in this gallery that is borrowed directly from the body. It is a head shaking, and it is legible for that reason rather than any interface one — which is also why it survives translation better than most conventions.

Its value is locative rather than semantic. The error message says what is wrong; the shake says this field. On a long form that distinction is worth several seconds of scanning, and on a passcode screen it is the entire interaction: the field refuses, clears, and waits, and no text is needed because there is only one thing it could mean.

Its failure is always the same one. Because the motion is so legible to a sighted reader looking at the right place, it is repeatedly shipped as the whole error state — no message, no accessible announcement, nothing in the markup. WCAG forbids that in two separate criteria, and it is worth being blunt about why: the shake is invisible to a screen reader, invisible to anyone whose attention was elsewhere for four hundred milliseconds, and invisible to a reader who has asked for less motion. It is a supplement. It has never been a signal.

Rejection, played once on request.
Duration
300–400ms
Easing
A damped oscillation, decaying to nothing. A shake that ends abruptly reads as a glitch; one that settles reads as a refusal.

Use when

  • A submission was refused and the reader’s attention is somewhere other than the field that caused it
  • The refusal is immediate and local — a wrong passcode, a failed inline validation
  • The same information is already being given in text, and the motion is only shortening the time to find it

Avoid when

  • It is the only signal. A shake with no message tells a reader something is wrong and not what — and tells a screen-reader user nothing at all
  • The error is not the reader’s fault. Shaking at somebody because a server failed blames them for it
  • It repeats. A field that shakes on every keystroke while a pattern is unsatisfied is punishing someone for typing
Without a pointerThe same on both, but on touch the field is frequently behind the keyboard. A shake nobody can see is not feedback, so on small screens the field must be scrolled into view before the motion runs — or the motion is wasted and the error is silent.
Under reduced motionNo shake. The error message and the field’s error styling carry the whole meaning, which they must anyway: this motion has never been allowed to be the only signal, because it is invisible to a screen reader and to anyone not looking at that part of the screen when it fires.
SourcesWCAG 2.2 SC 3.3.1 Error Identification and SC 1.4.1 Use of Colour, which together forbid any single-channel error signal; SC 2.3.1 Three Flashes for the frequency ceiling.

Why documented: That the motion may never be the only carrier of the error is a WCAG requirement, not a preference. The shake itself is convention — it comes from the physical gesture for “no” and has no measured basis.

MTN·01·006

Reveal

documented

This was already here. It has not arrived — it has been uncovered, and the layout around it is moving to make room rather than being replaced.

Reveal is the motion most often confused with arrival, and the confusion matters because the two make different claims. Arrival says something is new. Reveal says something was always there and is now uncovered — which is why animating a freshly fetched panel as a reveal is a small lie about where the content came from.

The mechanism carries the meaning. What actually moves in a reveal is not the content but everything below it: the layout opens. That is why height is the property to animate and opacity is the supporting act, and why the same effect done as a fade-in over a fixed-height box feels wrong — nothing made room, so nothing was uncovered.

The thing to keep in proportion is that the animation is not the disclosure. A disclosure is a control with a state, and that state is what an assistive technology reads. The motion is what a sighted reader gets in addition. Build the state first and it will still work with the animation removed, which is exactly what happens for a reader who has asked for less of it.

Reveal, played once on request.
Duration
200–300ms
Easing
Emphasised deceleration. The height change is the message, so it should finish decisively rather than drift.

Use when

  • Content is being disclosed in place and the surrounding layout genuinely moves — an accordion, a details element, an inline expansion
  • The reader needs to see that the page grew rather than changed, so that their sense of the whole survives
  • The revealed content is short. The animation should finish before the reader’s eye reaches the bottom of it

Avoid when

  • The content is long. Animating the height of a large block is expensive, janky and pointless — the reader is reading the top while the bottom is still resolving
  • It is really an arrival. Content fetched on demand did not exist a moment ago, and pretending it was always there misstates what happened
  • The state is not conveyed anywhere else. The motion is not the disclosure — aria-expanded is, and the animation is decoration on top of it
Without a pointerOn a pointer device the trigger and the revealed content are both visible at once. On a small screen an expanded section frequently pushes its own trigger off the top of the viewport, which is why an accordion on mobile needs to keep the header in view — otherwise the reader loses the thing they just pressed.
Under reduced motionThe content appears at full height with no transition. Disclosure loses almost nothing: the state change is structural and is carried by the control’s own state, which is where a screen reader reads it from in any case.
SourcesThe ARIA Authoring Practices disclosure and accordion patterns, which specify the state rather than the animation; aria-expanded in this building’s own register.

Why documented: The state requirement is specified: the Authoring Practices define disclosure in terms of aria-expanded and say nothing about animating it. The timing and easing on top are craft, and marked as such in the entry.