Skip to content
Toolcroft

Developer Tools

CSS Transition & Easing Visualizer - Live Timing Curve Editor

Visualize CSS transitions with an interactive easing curve. Choose a preset (ease, linear, ease-in, ease-out) or define a custom cubic-bezier, set duration and delay, and see the live animation.

Easing curve

Preview animation

Generated CSS
transition: all 300ms ease;

CSS transition syntax

transition: property duration timing-function delay;

Multiple properties can be transitioned by separating with commas: transition: opacity 0.3s ease, transform 0.5s ease-out.

Common timing functions

Keywordcubic-bezier equivalentFeel
easecubic-bezier(0.25, 0.1, 0.25, 1)Starts fast, slows at end (default)
linearcubic-bezier(0, 0, 1, 1)Constant speed
ease-incubic-bezier(0.42, 0, 1, 1)Starts slow, ends fast
ease-outcubic-bezier(0, 0, 0.58, 1)Starts fast, ends slow (natural feel)
ease-in-outcubic-bezier(0.42, 0, 0.58, 1)Slow at both ends

Performance tip

For the best animation performance, only transition transform and opacity. These properties are composited on the GPU and do not trigger layout or paint. Avoid transitioning width, height, top, or margin, which cause reflows.

Which properties can be transitioned?

Not all CSS properties are transitionable. Properties must have interpolatable values - i.e., the browser must know how to compute intermediate values between the start and end states.

Transitionable: opacity, transform, color, background-color, width, height, margin, padding, font-size, border-width, box-shadow, filter.

Not transitionable: display (cannot transition between none and block), visibility (but can be delayed with transition-delay), font-family (discrete value).

Workaround for display: none: Animate opacity from 1 to 0, then set visibility: hidden afterward using a transition delay:

.fade-out {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s, visibility 0s 0.3s; /* visibility changes after opacity finishes */
}

Staggered transitions

To create sequential entrance effects (e.g., list items animating in one by one), apply incremental transition-delay values:

.item:nth-child(1) { transition-delay: 0s; }
.item:nth-child(2) { transition-delay: 0.1s; }
.item:nth-child(3) { transition-delay: 0.2s; }
/* etc. */

Alternatively, use CSS animations with animation-delay calculated via calc() and a CSS variable in JavaScript. Staggered motion is a hallmark of polished UI design (popularized by Material Design and iOS animations).