CSS

CSS (Cascading Style Sheets) is the language that brings web pages to life with colors, layouts, and animations. It works alongside HTML to create visually stunning and responsive designs. Let's explore the power of CSS.

CSS Transitions

1 April 2025 | Category:

CSS transitions allow you to smoothly change property values over a specified duration when an element’s state changes. With transitions, you can create visual effects such as fading, sliding, and color changes, making your website interactive and engaging. By defining a start and end state for a property, you can create smooth animations without the need for JavaScript.


🔹 1. Overview of CSS Transitions

CSS transitions allow you to animate changes in CSS properties, making it possible to create smooth animations between states. A transition is triggered when a change occurs on an element (e.g., on hover, focus, or when a class is added or removed).

Key Properties of Transitions:

  • transition-property: Specifies the name of the CSS property to animate.
  • transition-duration: Specifies how long the transition should take.
  • transition-timing-function: Defines the speed curve of the transition (e.g., ease, linear).
  • transition-delay: Defines the delay before the transition starts.

🔹 2. Basic Syntax

The basic syntax for a CSS transition looks like this:

transition: <property> <duration> <timing-function> <delay>;
  • <property>: The CSS property you want to animate (e.g., color, background-color, transform).
  • <duration>: The time duration for the transition (e.g., 1s for one second, 500ms for 500 milliseconds).
  • <timing-function>: The timing function that controls the speed of the transition (e.g., ease, linear, ease-in).
  • <delay>: The delay before the transition starts (optional).

Example:

div {
  transition: background-color 0.5s ease-in-out;
}

div:hover {
  background-color: #ff6347; /* Tomato color */
}

In this example, when the user hovers over the div, the background-color will transition smoothly to tomato color in 0.5 seconds using the ease-in-out timing function.


🔹 3. transition-property – Defining the Property to Animate

The transition-property property specifies which CSS property should be transitioned. You can either specify a single property or multiple properties.

Syntax:

transition-property: <property1>, <property2>, ...;

Example:

div {
  transition-property: background-color, transform;
  transition-duration: 0.3s, 0.5s;
}

This example animates both the background-color and transform properties. Each property has its own duration.


🔹 4. transition-duration – Defining the Duration of the Transition

The transition-duration property specifies how long the transition effect takes to complete. The time is set in seconds (s) or milliseconds (ms).

Syntax:

transition-duration: <time>;

Example:

div {
  transition-duration: 0.5s; /* 500 milliseconds */
}

This makes the transition last for 0.5 seconds.


🔹 5. transition-timing-function – Defining the Speed Curve

The transition-timing-function property defines the speed curve of the transition. This property controls how the intermediate states of the transition are paced over the duration.

Common Timing Functions:

  • linear: The transition progresses at a constant speed.
  • ease: The transition starts slow, becomes faster in the middle, and ends slow.
  • ease-in: The transition starts slow and speeds up.
  • ease-out: The transition starts fast and slows down.
  • ease-in-out: The transition starts and ends slow, with a faster middle section.
  • cubic-bezier(n,n,n,n): Allows you to create custom timing functions using cubic Bezier curves.

Example:

div {
  transition-timing-function: ease-in-out;
}

This makes the transition use a slow start and end with a fast middle.


🔹 6. transition-delay – Defining the Delay Before the Transition Starts

The transition-delay property specifies the delay before the transition starts. It is useful if you want to wait a certain amount of time before triggering the transition.

Syntax:

transition-delay: <time>;

Example:

div {
  transition-delay: 0.3s; /* 300 milliseconds delay */
}

This delays the start of the transition by 0.3 seconds.


🔹 7. Using Multiple Transitions

You can specify multiple transitions by separating them with commas. Each transition can have its own duration, timing function, and delay.

Example:

div {
  transition-property: background-color, transform;
  transition-duration: 0.5s, 1s;
  transition-timing-function: ease-in-out, linear;
}

In this example:

  • The background-color transitions over 0.5 seconds with ease-in-out.
  • The transform property transitions over 1 second with a linear timing function.

🔹 8. Transitioning transform and opacity

One of the most common uses of CSS transitions is with transform and opacity properties. Both of these properties work well with transitions because they do not affect the flow of the document (they are applied to the rendering layer).

Example:

div {
  transition: transform 0.3s ease;
}

div:hover {
  transform: translateX(100px);
}

In this example, the div will smoothly translate 100px along the X-axis when hovered.

Opacity Example:

div {
  transition: opacity 0.5s ease-in-out;
}

div:hover {
  opacity: 0.5;
}

This changes the opacity of the div to 50% when hovered, fading it in and out.


🔹 9. transition Shorthand Property

You can use the transition shorthand property to combine all the transition-related properties into one line. The order is as follows:

  • transition: property duration timing-function delay;

Example:

div {
  transition: background-color 0.5s ease-in-out 0.3s;
}

This shorthand syntax animates the background-color property over 0.5 seconds, with an ease-in-out timing function, and a 0.3-second delay before the transition starts.


🔹 10. Browser Support for CSS Transitions

CSS transitions are well-supported across modern browsers, but older versions of Internet Explorer (IE 9 and below) do not support them. Always check the compatibility table if you’re targeting older browsers.

You can use vendor prefixes for older browsers like this:

div {
  -webkit-transition: background-color 0.5s ease; /* Safari, older versions of Chrome */
  -moz-transition: background-color 0.5s ease;    /* Firefox */
  transition: background-color 0.5s ease;         /* Standard syntax */
}

🔹 11. Conclusion

CSS transitions are a powerful tool for creating smooth, interactive effects without the need for JavaScript. They allow you to animate changes to properties like color, size, and position over a specified duration, providing users with a visually engaging experience.

Key Takeaways:

  • transition-property specifies the property you want to animate.
  • transition-duration defines how long the transition lasts.
  • transition-timing-function controls the speed curve of the transition.
  • transition-delay defines how long to wait before starting the transition.
  • Use the shorthand transition property to combine multiple values into a single line of CSS.

CSS transitions are an excellent choice for creating subtle animations that enhance the user experience on your website. By learning how to master transitions, you can add depth and interactivity to your designs.