ReviseAlgo Logo

Advanced CSS

Transition

Master CSS Transitions, covering property controls, timing functions, durations, cubic-bezier curves, and performance-optimized animation practices.

Last Updated: July 15, 2026 • 10 min read

1. Learning Objectives

In this lesson, you will master creating smooth hover and interactive states using CSS Transitions. By the end of this topic, you will be able to:

  • Identify the four components of a CSS transition (property, duration, timing-function, and delay).
  • Differentiate between standard timing functions (like ease, linear, and ease-in-out).
  • Create custom animations using cubic-bezier curves.
  • Optimize animation performance by transitioning only GPU-friendly properties (like opacity and transform).
  • Write clean transition shorthand declarations.

2. Overview

CSS transitions allow you to animate changes to CSS properties smoothly over a set duration. Rather than having styles apply instantly (such as a hover background color change), transitions interpolate values over time to create a smooth, visually appealing animation.

3. Why This Topic Matters

Smooth transitions improve the user experience, but incorrect configurations can cause issues:

  • Layout Reflow Stutter: Transitioning layout-triggering properties (like width, height, or margin) forces the browser to recalculate the page layout on every frame. This causes stuttering and lag, especially on mobile devices.
  • Transition State Breaks: Toggling an element's display style using display: none breaks the transition effect since elements removed from the layout flow cannot transition opacity or scale.

4. Real-World Analogy

Think of CSS transitions like **driving a car between stoplights**:

  • The Journey (transition-property): Choosing the path you want to take (e.g. driving coordinates).
  • The Time (transition-duration): The time it takes to drive from stoplight A to stoplight B (e.g. taking exactly 3 seconds).
  • The Speed Profile (transition-timing-function): How the car accelerates:
    • Linear: Driving at a constant, fixed speed the entire time.
    • Ease-in: Starting slowly, then accelerating as you approach the destination.
    • Ease-out: Accelerating quickly at the start, then braking gently as you arrive.
  • The Delay (transition-delay): Waiting for the stoplight to turn green before starting the car.

5. Core Concepts

CSS transitions are defined using four properties:

  • transition-property: The name of the CSS property you want to transition (e.g. background-color, opacity). Avoid using all since it hurts performance.
  • transition-duration: The duration of the transition, declared in seconds (s) or milliseconds (ms).
  • transition-timing-function: The mathematical curve (easing) that controls the animation's acceleration profile.
  • transition-delay: The delay before the transition begins.
Property Category Performance Level Best Practice Rule
transform / opacity Fast (GPU accelerated) Preferred choice. Does not trigger page reflows or repaints.
color / background-color Medium (Triggers repaint) Acceptable for simple interactive hover states.
width / height / top / margin Slow (Triggers layout reflow) Avoid using. Forces the browser to recalculate the page layout.

6. Syntax & API Reference

Below is the syntax comparing individual properties and the transition shorthand declaration:

7. Visual Diagram

This diagram displays how the browser interpolates values during a CSS transition:

8. Live Example — Full Working Code

A sample HTML document showcasing button transitions and hardware-accelerated transforms:

9. Interactive Playground

Try It Yourself Challenges:

  1. Change the transition-duration value from 0.3s to a slower 1.5s to see the scaling animation in detail.
  2. Test how applying a delay of 0.5s impacts user hover feedback.

10. Common Mistakes

Mistake Why it happens Wrong Correct
Missing transition time units Declaring duration as a plain number (e.g. 300) without units, causing the browser to ignore the transition rule. transition: opacity 300; transition: opacity 300ms;
Transitioning layout dimensions Transitioning width or margin properties, which forces layout reflows and causes animation lag. transition: width 0.3s; Use transform: scaleX() for better performance.

11. Best Practices

  • Transition GPU-friendly properties: Stick to transitioning opacity and transform properties. These are processed by the GPU, ensuring smooth animations at 60fps.
  • Avoid using transition: all: Avoid transitioning all properties. Specifying properties individually prevents performance lag and unintended animations.
  • Always declare duration units: Always include duration units (e.g. 0.3s or 300ms) in your declarations.
  • Keep durations short: Keep user-interaction transitions brief (between 150ms and 300ms) to keep controls feeling responsive.

12. Browser Compatibility

Feature Chrome Firefox Safari Edge
CSS Transitions support Supported (26+) Supported (16+) Supported (6.1+) Supported (12+)

13. Interview Questions

🟢 Q1: Why should you avoid transitioning layout-triggering properties like width, height, or margin?

Answer: Transitioning layout properties forces the browser to recalculate the positions and sizes of all elements on the page (layout reflow) on every frame of the animation. This is a CPU-intensive process that can cause stuttering and animation lag. Transitioning GPU-friendly properties like transform and opacity avoids layout reflows, ensuring smooth animations.

14. Debugging Exercise

Explain why the visibility toggle fails to animate, and fix the CSS configuration:

View Solution

Diagnosis: The display property cannot be transitioned. When you toggle the .show class, the display switches from none to block instantly. Because the element is added to the layout flow instantly, the opacity transition is bypassed and the element snaps into view. To fix this, use visibility and opacity properties for the transition, or use JavaScript to coordinate the display toggle.

Fixed CSS:

15. Practice Exercises

Exercise 1: Standard Hover Underline

Build a navigation link with an animated bottom border underline. Use the `transform` property to scale the underline width from 0 to 1 on hover.

16. Scenario-Based Challenge

The Smooth Accordion Toggle Challenge:

An FAQ section needs to expand accordion panels smoothly when clicked. Currently, toggling classes updates the panels instantly, causing a harsh transition. Outline a CSS transition strategy using height variables and opacity controls to animate the panels expanding.

17. Quick Quiz

Q1: Which CSS properties are GPU-accelerated and recommended for smooth animations?

A) width and height

B) top and left

C) transform and opacity

Answer: C — Transitioning transform and opacity properties uses the GPU, ensuring smooth animations.

18. Summary & Key Takeaways

  • • Transitioning opacity and transform properties ensures smooth, high-performance animations.
  • • Toggling an element's display between none and block breaks transition animations. Use visibility instead.

19. Cheat Sheet

Timing Function Visual Layout Action
transition: transform 0.2s cubic-bezier(x1, y1, x2, y2); Applies a custom acceleration curve to the transform animation.