Skip to content

CSS Transitions

How to create smooth CSS transitions by animating property changes over time using transition-duration, transition-timing-function (like linear), and other key properties.

CSS Transitions

CSS transitions allows you to change property values smoothly, over a given duration.

CSS Transition Properties

Property Description
transition A shorthand property for setting the four transition properties into a single property
transition-delay Specifies a delay (in seconds) for the transition effect
transition-duration Specifies how many seconds or milliseconds a transition effect takes to complete
transition-property Specifies the name of the CSS property the transition effect is for
transition-timing-function Specifies the speed curve of the transition effect

How to Use CSS Transitions?

To create a transition effect, you must specify two things:

  • the CSS property you want to add an effect to
  • the duration of the effect

For example, a <div> element with a transition effect for the width property with a duration of 2 seconds.

div {  
	width:  100px;  
	height:  100px;  
	background:  red;  
	transition:  width 2s;  
}

The transition effect will start when the specified CSS property (width) changes value.

Now, let us specify a new value for the width property when a user mouses over the <div> element:

div:hover {  
	width:  300px;  
}

Common cases

Change Several Property Values

Example: add a transition effect for both the width and height property, with a duration of 2 seconds for the width and 4 seconds for the height

div {  
	transition:  width 2s, height 4s;  
}

Specify the Speed Curve of the Transition

The transition-timing-function property specifies the speed curve of the transition effect.

The transition-timing-function property can have the following values:

  • ease - specifies a transition effect with a slow start, then fast, then end slowly (this is default)
  • linear - specifies a transition effect with the same speed from start to end
  • ease-in - specifies a transition effect with a slow start
  • ease-out - specifies a transition effect with a slow end
  • ease-in-out - specifies a transition effect with a slow start and end
  • cubic-bezier(n,n,n,n) - lets you define your own values in a cubic-bezier function

The following example shows some of the different speed curves that can be used:

Delay the Transition Effect

The transition-delay property specifies a delay (in seconds) for the transition effect.

The following example has a 1 second delay before starting:

div {  
	transition-delay:  1s;  
}

Transition + Transformation

The following example adds a transition effect to the transformation:

div {  
	transition:  width 2s, height 2s, transform 2s;  
}

More Transition Examples

The CSS transition properties can be specified one by one, like this:

div {  
	transition-property:  width;  
	transition-duration:  2s;  
	transition-timing-function:  linear;  
	transition-delay:  1s;  
}

or by using the shorthand property transition:

div {  
	transition:  width 2s linear 1s;  
}
Navigation