127 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			127 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: CSS3 Transitions
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## CSS3 Transitions
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Using CSS3 **Transitions** can be useful if you want your app or your web page to be more dynamic and good looking.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Indeed, transitions allow you to change property (`width`, `color`, ...) values in a **smooth** way.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The `transition` property is a shorthand property for `transition-property`, `transition-duration`, `transition-timing-function`, `transition-delay`, the syntax is the following :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```css
							 | 
						||
| 
								 | 
							
								transition: transition-property transition-duration transition-timing-function transition-delay
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For example : 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								transition: width 2s ease-in-out 1s;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Description of the properties
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### `transition-property`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Specify the **name** of property to which you should apply a transition : 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `background-color`
							 | 
						||
| 
								 | 
							
								* `color`
							 | 
						||
| 
								 | 
							
								* `width`
							 | 
						||
| 
								 | 
							
								* `height`
							 | 
						||
| 
								 | 
							
								* `margin`
							 | 
						||
| 
								 | 
							
								* `border-radius`
							 | 
						||
| 
								 | 
							
								* And so on !
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For example : 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								transition-property: width; /* means the transition applies on the width */
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### `transition-duration`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Specify the **number of seconds or milliseconds** the transition should **take** : 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For example :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								transition-duration: 2s /* means the transition effect last 2s */
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### `transition-timing-function`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Specify the **speed curve** of the transition effect. Thus, you can change your **transition's speed over its duration**. 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Here are the most used values :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `linear`
							 | 
						||
| 
								 | 
							
								* `ease`
							 | 
						||
| 
								 | 
							
								* `ease-in`
							 | 
						||
| 
								 | 
							
								* `ease-out`
							 | 
						||
| 
								 | 
							
								* `ease-in-out`
							 | 
						||
| 
								 | 
							
								* `cubic-bezier(n, n, n, n)`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For example :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```css
							 | 
						||
| 
								 | 
							
								transition-timing-function: linear
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								N.B : All the values above are in fact specifics `cubic-bezier`. `linear`, for instance, is equivalent to `cubic-bezier(0.25,0.1,0.25,1)`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You can experiment and learn more about *Cubic Bezier* [here](http://cubic-bezier.com/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### `transition-delay`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Specify in **seconds or milliseconds** when the transition will **start**.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								For example :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								transition-delay: 1s /* means wait 1s before the transition effect start */
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### How to use transitions ?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								You can write a transition in two ways :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Using the shorthand property (`transition`)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```css
							 | 
						||
| 
								 | 
							
								div {
							 | 
						||
| 
								 | 
							
								  width: 200px;
							 | 
						||
| 
								 | 
							
								  transition: all 1s ease-in-out;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								div:hover {
							 | 
						||
| 
								 | 
							
								  width: 300px;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Giving all transition properties a value
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```css
							 | 
						||
| 
								 | 
							
								div {
							 | 
						||
| 
								 | 
							
								  width: 200px;
							 | 
						||
| 
								 | 
							
								  transition-property: width;
							 | 
						||
| 
								 | 
							
								  transition-duration: 1s;
							 | 
						||
| 
								 | 
							
								  transition-timing-function: ease-in-out;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								N.B : Both examples are **equivalent**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### Examples
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Here are some simple pens containing simple transitions :
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* [Basic transitions](https://codepen.io/thomlom/pen/gGqzNp)
							 | 
						||
| 
								 | 
							
								* [Transitions + JavaScript](https://codepen.io/thomlom/pen/JrxZKz?editors=1111)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### More Information:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* [w3schools : CSS3 Transitions](https://www.w3schools.com/css/css3_transitions.asp) 
							 | 
						||
| 
								 | 
							
								* [MDN web docs : Using CSS transitions](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions)
							 | 
						||
| 
								 | 
							
								* [DevTips : CSS Transition](https://www.youtube.com/watch?v=8kK-cA99SA0)
							 |