Jomatter

CSS Transition Generator

Generate custom CSS transitions for smooth, responsive interface effects. Configure properties, duration, delay, and easing functions, preview animations interactively, and copy or download clean CSS instantly.

Transition Configuration

Duration Presets

Generated CSS

Characters: 0 Lines: 0

Live Preview

Ready
Preview

All Developer Tools

Browse free online tools for JSON, HTML, CSS, XML, JavaScript, data conversion, and everyday development tasks.

50 tools

What Is a CSS Transition Generator?

A CSS transition generator is a tool that helps you create CSS code for smooth changes between property values. Instead of writing every transition declaration manually, you can choose a property, duration, timing function, and optional delay to build a transition that fits your interface.

CSS transitions are commonly used for button hover effects, card interactions, link colors, dropdown menus, image effects, and other interface states. For example, a button can gradually change its background color when a user moves the pointer over it, rather than changing instantly.

Use this online CSS Transition Generator to configure transition settings, preview an effect where supported, and generate CSS that you can copy into your stylesheet. You can also create transitions for properties such as opacity, transform, color, background-color, and box-shadow.

Remember: A transition describes how a property changes between states. You generally need to define both the original and changed property values, such as a default button style and its :hover style, to see the effect.

How to Generate CSS Transitions Online

Creating a transition is straightforward. Choose the property you want to change, configure its timing, and use the generated CSS in your project.

1
Select a CSS property

Choose the property you want to transition, such as background-color, opacity, transform, or another supported property.

2
Set the duration

Choose how long the transition should take. For example, 300ms or 0.3s creates a transition lasting three-tenths of a second.

3
Choose a timing function

Select ease, linear, ease-in, ease-out, ease-in-out, or a custom Bézier curve if supported.

4
Add an optional delay

Set how long the browser should wait before starting the transition. Use 0ms when no delay is needed.

5
Preview and copy the CSS

Test the effect in the preview if available, then copy the generated declaration and add the relevant starting and ending states to your stylesheet.

Example: Button Hover Transition

.button { background-color: #1D4ED8; transition: background-color 300ms ease-in-out; } .button:hover { background-color: #2563EB; }

When the button enters its hover state, the browser gradually changes its background color over 300 milliseconds. The transition reverses when the button returns to its original state.

Understanding CSS Transition Syntax

The CSS transition shorthand combines one or more transition settings in a single declaration. Its components control which property changes, how long the change takes, how its speed progresses, and when it begins.

transition: property duration timing-function delay;

For example:

.card { transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms; }

This declaration transitions the card's transform property over 250 milliseconds, using a custom timing curve with no initial delay.

Component Purpose Example
Property Specifies which CSS property should transition. opacity
Duration Sets how long the transition takes. 300ms
Timing function Controls the progress and speed curve of the change. ease-in-out
Delay Sets the waiting time before the transition starts. 100ms

Important: The default transition duration is 0s. If you do not specify a positive duration, a property change generally occurs without a visible transition.

CSS Transition Timing Functions

A timing function defines how a transition progresses between its starting and ending values. Two transitions can use the same property and duration but feel different because their timing curves are different.

Ease

The ease function starts at a moderate pace, accelerates, and slows toward the end. It is a practical default for many interface interactions.

transition: transform 300ms ease;

Linear

The linear function progresses at a constant rate throughout the transition.

transition: opacity 300ms linear;

Ease In

The ease-in function starts slowly and accelerates toward the end.

transition: transform 300ms ease-in;

Ease Out

The ease-out function starts quickly and decelerates as the transition finishes.

transition: opacity 300ms ease-out;

Ease In Out

The ease-in-out function starts slowly, speeds up in the middle, and slows down toward the end.

transition: all 300ms ease-in-out;

Cubic Bezier

The cubic-bezier() function lets you define a custom timing curve using four control-point coordinates.

transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1);

Built-in timing keywords are predefined curves. A custom cubic-bezier() value is useful when you need more control over acceleration and deceleration.

CSS Transition Duration and Delay

Duration and delay control different parts of a transition. Duration determines how long the actual property change takes, while delay determines how long the browser waits before starting it.

Transition Duration

Short durations can make small interface changes feel responsive. Longer durations can be suitable for larger visual changes when the additional time supports the intended effect.

.button { transition: background-color 200ms ease; }

The background color transition takes 200 milliseconds to complete.

Transition Delay

A delay is useful when a transition should begin after a short pause or coordinate with another interface effect.

.menu-item { transition: opacity 250ms ease 100ms; }

The opacity transition waits 100 milliseconds before its 250-millisecond change begins.

Common Duration Values

Duration Equivalent Typical Use
100ms 0.1 seconds Very quick visual feedback.
150ms 0.15 seconds Small button or control interactions.
200ms 0.2 seconds Short color and opacity changes.
300ms 0.3 seconds Common hover, focus, and card effects.
500ms 0.5 seconds More noticeable fades and movement.
700ms 0.7 seconds Longer, deliberate visual transitions.

These are starting points rather than strict rules. The right duration depends on the element, the distance it moves, the importance of the interaction, and how quickly the interface should respond.

Best CSS Properties to Transition

CSS transitions are useful for many visual properties, but the choice of property can influence performance and the quality of the result. Prefer properties that can be animated efficiently when they produce the intended effect.

Opacity

Use opacity to fade an element between transparent and visible states.

.fade { opacity: 0; transition: opacity 300ms ease; } .fade.visible { opacity: 1; }

Transform

Use transform to move, scale, rotate, or otherwise transform an element without necessarily changing normal document flow.

.card { transition: transform 300ms ease-out; } .card:hover { transform: translateY(-6px); }

Background Color

Use background-color to create smoother hover and active states for controls, cards, and interface sections.

.button { background-color: #1D4ED8; transition: background-color 250ms ease; } .button:hover { background-color: #2563EB; }

Text Color

Transition color when a link, navigation item, or text-based control changes appearance.

a { color: #2563EB; transition: color 200ms linear; } a:hover { color: #1E40AF; }

Box Shadow

Use box-shadow to change a card's visual depth when it receives hover or focus.

.card { box-shadow: 0 2px 6px rgba(0,0,0,.08); transition: box-shadow 300ms ease; } .card:hover { box-shadow: 0 12px 24px rgba(0,0,0,.15); }

Border Color

Use border-color to create clear visual feedback on focused form fields and interactive containers.

input { border: 1px solid #DCE1E8; transition: border-color 200ms ease; } input:focus { border-color: #2451D6; }

Performance tip: Prefer transform and opacity for many movement and fade effects. Properties that affect layout or painting, such as dimensions and margins, may require more browser work. The best choice depends on the effect and the page.

Useful CSS Transition Examples

These examples demonstrate common transition patterns you can adapt for buttons, cards, links, images, and interface elements.

Button Hover Effect

.button { background-color: #1D4ED8; color: #FFFFFF; transition: background-color 250ms ease; } .button:hover { background-color: #2563EB; }

This example smoothly changes a button's background color when the pointer enters or leaves the hover state.

Card Lift Effect

.card { transition: transform 300ms ease-out, box-shadow 300ms ease-out; } .card:hover { transform: translateY(-6px); box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15); }

The card moves upward and gains a stronger shadow on hover. Both properties transition over the same duration.

Fade In and Out

.fade { opacity: 0; transition: opacity 500ms ease-in; } .fade.visible { opacity: 1; }

Changing the element's class to include visible changes its opacity and triggers the transition. The element remains in the layout even when its opacity is zero.

Smooth Link Color

a { color: #2563EB; transition: color 200ms linear; } a:hover { color: #1E40AF; }

The link color changes at a constant rate over 200 milliseconds when its hover state changes.

Image Zoom Effect

.image { transition: transform 300ms ease-out; } .image:hover { transform: scale(1.05); }

The image scales up slightly on hover. Consider placing it inside an overflow-hidden container if the enlarged image should stay within its original visible area.

Input Focus Transition

.input { border: 1px solid #DCE1E8; transition: border-color 200ms ease, box-shadow 200ms ease; } .input:focus { border-color: #2451D6; box-shadow: 0 0 0 3px rgba(36, 81, 214, 0.12); }

This pattern creates a gradual border and shadow change when a form field receives keyboard or pointer focus. Preserve a clearly visible focus indicator for accessibility.

Transition One Property or Multiple Properties

You can transition a single CSS property or list multiple properties in the same declaration. Separate multiple transitions with commas so each property can use its own duration, timing function, and delay.

Single Property

.button { transition: background-color 250ms ease; }

Only the background color is explicitly configured to transition. Other property changes use their own CSS behavior.

Multiple Properties

.card { transition: transform 300ms ease-out, box-shadow 300ms ease-out, background-color 200ms ease; }

Each transition can have its own duration and timing curve. This gives you finer control over the final effect.

Using the All Keyword

.element { transition: all 300ms ease; }

The all keyword applies the transition settings to all properties that can transition and whose values change. It is convenient for quick prototypes, but explicitly listing the properties you need is often easier to maintain.

Best practice: Prefer specific properties such as opacity, transform, and background-color instead of using all by default. This makes the intended behavior clearer and avoids unintended transitions.

CSS Transitions and Accessibility

Motion can make interactive elements easier to follow, but unnecessary movement or prolonged effects may be uncomfortable for some users. Consider the purpose of each transition and provide a reduced-motion alternative when appropriate.

Respect Reduced-Motion Preferences

The prefers-reduced-motion media query allows your stylesheet to respond to a user's operating-system or browser motion preference.

.card { transition: transform 300ms ease-out; } .card:hover { transform: translateY(-6px); } @media (prefers-reduced-motion: reduce) { .card { transition: none; } .card:hover { transform: none; } }

In this example, the transition and hover movement are disabled when the user has requested reduced motion.

Keep Interactions Responsive

Use suitable durations so buttons, links, and controls provide prompt feedback instead of making users wait for routine actions.

Preserve Keyboard Feedback

Provide clear focus styles for keyboard users. Do not rely on hover-only effects to communicate important information or functionality.

Avoid Unnecessary Motion

Use animation when it clarifies a state change or adds useful feedback rather than adding movement to every element.

Check Color Contrast

Make sure text and controls remain readable in both the starting and ending states of a transition.

Common CSS Transition Problems and Fixes

If a transition appears to jump instead of moving smoothly, check the property, duration, initial value, target value, and trigger state.

The Transition Happens Instantly

A missing duration or a duration of 0s leaves no visible time for the change to occur.

Fix: Set a positive duration.

.button { transition: background-color 250ms ease; }

The Hover Effect Does Not Work

The target state may not change the expected property, or the selector may not match the element.

Fix: Check the selectors and confirm that the starting and ending property values differ.

The Property Does Not Transition Smoothly

Not all CSS properties or value changes can interpolate in the same way. Some changes are discrete rather than continuously animated.

Fix: Use a supported transitionable property and compatible values.

The Effect Feels Too Slow

A long duration or delay can make a small interaction feel unresponsive.

Fix: Try a shorter duration, such as 150ms or 200ms, and remove unnecessary delays.

The Transition Is Not Smooth

The timing function may not suit the movement or visual change.

Fix: Compare ease, ease-out, and ease-in-out to find the curve that best fits the effect.

The Page Becomes Slow

Frequent layout or painting work during transitions can affect performance, especially on complex pages.

Fix: Where suitable, prefer transform and opacity, and avoid unnecessary transitions across many properties.

Features of an Online CSS Transition Generator

A useful transition generator simplifies the process of building and testing CSS effects. Available controls depend on the implementation of the tool.

  • Property selection: Choose a specific CSS property or use the all keyword when appropriate.
  • Adjustable duration: Configure how many milliseconds or seconds a transition takes.
  • Timing functions: Select built-in easing options such as ease, linear, ease-in, ease-out, and ease-in-out.
  • Custom Bézier curves: Configure a cubic-bezier() curve when custom timing is supported.
  • Optional delay: Control how long a transition waits before beginning.
  • Live preview: Test generated effects in a preview area if interactive preview controls are available.
  • Multiple transitions: Combine property transitions in one CSS declaration.
  • Copyable CSS: Reuse the generated declaration in a stylesheet or component.

Common Uses of a CSS Transition Generator

CSS transitions are suitable for many small interface interactions. A transition generator helps you experiment with timing and easing before adding the final code to your project.

Button Hover and Focus Effects

Create smooth color, shadow, border, and transform changes for buttons and other clickable controls.

Interactive Cards

Add subtle lift, shadow, or scaling effects to product cards, content panels, and dashboard elements.

Navigation Menus

Configure opacity, color, or transform transitions for navigation states and menu items.

Modal and Tooltip Effects

Use opacity and transform transitions to soften visual state changes when overlays or tooltips appear and disappear.

Form Field Feedback

Transition border colors, shadows, or other visual properties when an input receives focus.

Image and Gallery Effects

Build controlled zoom, movement, and opacity effects for images and gallery items.

Theme and Color Changes

Use color transitions for selected backgrounds, borders, and text where gradual changes improve the experience.

Responsive Interface Components

Configure transitions for side panels, mobile navigation, and other UI components that change their visual state.

CSS Transition vs. CSS Animation

Transitions and animations can both create motion in CSS, but they are suited to different tasks. A transition normally responds to a change in state, while a CSS animation can use keyframes to define multiple stages of motion.

Feature CSS Transition CSS Animation
Trigger Usually responds to a property value changing. Can start when the animation is applied, without a hover interaction.
Keyframes Does not define a sequence of keyframes. Can define multiple stages with @keyframes.
Timing Uses duration, timing function, delay, and related transition settings. Supports duration, timing functions, delay, iteration counts, direction, and fill modes.
Repetition Runs as properties transition between states. Can repeat automatically using an iteration count or infinite.
Common use Hover states, focus changes, and interactive feedback. Multi-step movement, repeated effects, and more elaborate sequences.

Which should you choose? Use transitions for simple state changes such as button colors and card movement. Use CSS animations when you need a keyframe sequence, multiple stages, or repeated motion independent of a state change.

Frequently Asked Questions

What is a CSS transition?

A CSS transition gradually changes a supported CSS property from one value to another over a specified duration. It is commonly used for hover effects, focus states, color changes, and interface movement.

What is a CSS transition generator?

A CSS transition generator helps you configure a transition property, duration, timing function, and delay, then generate CSS code. Some tools also provide an interactive preview and a copy option.

How do I create a CSS transition?

Add a transition declaration to an element's original state and define the changed property value in a state such as :hover or :focus. The browser transitions between the values when the state changes.

What is the correct CSS transition syntax?

The shorthand commonly follows transition: property duration timing-function delay;. For example, transition: opacity 300ms ease 0ms; configures a 300-millisecond opacity transition with no delay.

What duration should I use for CSS transitions?

Durations between 150ms and 300ms are common starting points for small UI interactions. Larger movements or more noticeable visual changes may need longer durations. Test the effect in context to find a suitable value.

What is the difference between ease and linear?

The ease timing function changes speed throughout the transition, while linear progresses at a constant rate. Other easing functions control whether the change starts slowly, finishes slowly, or does both.

What is cubic-bezier() in CSS?

cubic-bezier() defines a custom timing curve using four coordinates. It lets you control how a transition accelerates and decelerates rather than using only the built-in easing keywords.

Why is my CSS transition not working?

Check that the duration is greater than zero, the property can transition between the selected values, and the starting and ending states actually differ. Also confirm that the intended state change or class update occurs.

Can I transition multiple CSS properties?

Yes. Separate multiple transition definitions with commas. For example, transition: transform 300ms ease, opacity 200ms linear; gives each property its own timing settings.

Should I use transition: all?

The all keyword applies transition settings to all properties that can transition and whose values change. Explicitly listing the properties you want to transition is often more predictable and easier to maintain.

Which CSS properties are best for transitions?

Common choices include opacity, transform, background-color, color, border-color, and box-shadow. The most suitable property depends on the visual effect and performance requirements.

What is the difference between a transition and an animation?

A transition generally interpolates a property change between states. A CSS animation can use keyframes to describe several stages, repeat automatically, and control its direction and iteration behavior.

Can CSS transitions work on mobile devices?

Yes. CSS transitions work on supported properties in modern mobile browsers. Since mobile devices do not use hover in the same way as desktop pointers, use appropriate touch, focus, or class-based state changes for your interface.

How can I make transitions accessible?

Keep motion purposeful, maintain clear focus indicators, and respect reduced-motion preferences with the prefers-reduced-motion media query when appropriate.