231 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			231 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: CSS3 2d Transforms | ||
|  | --- | ||
|  | 
 | ||
|  | ## CSS3 2d Transforms
 | ||
|  | 
 | ||
|  | CSS3 transforms allow you to translate, rotate, scale, and skew elements. | ||
|  | 
 | ||
|  | A transformation is an effect that lets an element change shape, size and | ||
|  | position. | ||
|  | 
 | ||
|  | CSS3 supports 2D and 3D transformations. | ||
|  | 
 | ||
|  | ## Browser Support for 2D Transforms
 | ||
|  | 
 | ||
|  | The numbers in the table specify the first browser version that fully supports | ||
|  | the property. | ||
|  | 
 | ||
|  | Numbers followed by -ms-, -webkit-, -moz-, or -o- specify the first version that | ||
|  | worked with a prefix. | ||
|  | 
 | ||
|  | | Property                                | Chrome                 | IE                 | Firefox             | Safari               | Opera                                        | | ||
|  | | --------------------------------------- | ---------------------- | ------------------ | ------------------- | -------------------- | -------------------------------------------- | | ||
|  | | transform                               | 36.0 4.0 <br> -webkit- | 10.0 9.0 <br> -ms- | 16.0 3.5 <br> -moz- | 9.0 3.2 -webkit-     | 23.0 15.0 <br> -webkit- <br> 12.1 10.5 -o-   | | ||
|  | | transform-origin <br>(two-value-syntax) | 36.0 4.0<br> -webkit-  | 10.0 9.0 <br>-ms-  | 16.0 3.5 <br> -moz- | 9.0 3.2 <br>-webkit- | 23.0 15.0 <br>-webkit- <br>12.1 <br>10.5 -o- | | ||
|  | 
 | ||
|  | ## CSS3 2D Transforms
 | ||
|  | 
 | ||
|  | Methods: | ||
|  | 
 | ||
|  | * `translate()` | ||
|  | * `rotate()` | ||
|  | * `scale()` | ||
|  | * `skewX()` | ||
|  | * `skewY()` | ||
|  | * `matrix()` | ||
|  | 
 | ||
|  | ## The translate() Method
 | ||
|  | 
 | ||
|  | The `translate()` method moves an element from its current position (according | ||
|  | to the parameters given for the X-axis and the Y-axis). | ||
|  | 
 | ||
|  | The following example moves the `<div>` element 50 pixels to the right, and 100 | ||
|  | pixels down from its current position: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: translate(50px, 100px); /* IE 9 */ | ||
|  |   -webkit-transform: translate(50px, 100px); /* Safari */ | ||
|  |   transform: translate(50px, 100px); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## The rotate() Method
 | ||
|  | 
 | ||
|  | The `rotate()` method rotates an element clockwise or counter-clockwise | ||
|  | according to a given degree. | ||
|  | 
 | ||
|  | The following example rotates the `<div>` element clockwise with 20 degrees: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: rotate(20deg); /* IE 9 */ | ||
|  |   -webkit-transform: rotate(20deg); /* Safari */ | ||
|  |   transform: rotate(20deg); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | Using negative values will rotate the element counter-clockwise. | ||
|  | 
 | ||
|  | The following example rotates the `<div>` element counter-clockwise with 20 | ||
|  | degrees: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: rotate(-20deg); /* IE 9 */ | ||
|  |   -webkit-transform: rotate(-20deg); /* Safari */ | ||
|  |   transform: rotate(-20deg); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## The scale() Method
 | ||
|  | 
 | ||
|  | The `scale()` method increases or decreases the size of an element (according to | ||
|  | the parameters given for the width and height). | ||
|  | 
 | ||
|  | The following example increases the `<div>` element to be two times of its | ||
|  | original width, and three times of its original height: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: scale(2, 3); /* IE 9 */ | ||
|  |   -webkit-transform: scale(2, 3); /* Safari */ | ||
|  |   transform: scale(2, 3); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | The following example decreases the `<div>` element to be half of its original | ||
|  | width and height: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: scale(0.5, 0.5); /* IE 9 */ | ||
|  |   -webkit-transform: scale(0.5, 0.5); /* Safari */ | ||
|  |   transform: scale(0.5, 0.5); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## The skewX() Method
 | ||
|  | 
 | ||
|  | The `skewX()` method skews an element along the X-axis by the given angle. | ||
|  | 
 | ||
|  | The following example skews the `<div>` element 20 degrees along the X-axis: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: skewX(20deg); /* IE 9 */ | ||
|  |   -webkit-transform: skewX(20deg); /* Safari */ | ||
|  |   transform: skewX(20deg); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## The skewY() Method
 | ||
|  | 
 | ||
|  | The `skewY()` method skews an element along the Y-axis by the given angle. | ||
|  | 
 | ||
|  | The following example skews the `<div>` element 20 degrees along the Y-axis: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: skewY(20deg); /* IE 9 */ | ||
|  |   -webkit-transform: skewY(20deg); /* Safari */ | ||
|  |   transform: skewY(20deg); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## The skew() Method
 | ||
|  | 
 | ||
|  | The `skew()` method skews an element along the X and Y-axis by the given angles. | ||
|  | 
 | ||
|  | The following example skews the `<div>` element 20 degrees along the X-axis, and | ||
|  | 10 degrees along the Y-axis: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: skew(20deg, 10deg); /* IE 9 */ | ||
|  |   -webkit-transform: skew(20deg, 10deg); /* Safari */ | ||
|  |   transform: skew(20deg, 10deg); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | If the second parameter is not specified, it has a zero value. So, the following | ||
|  | example skews the `<div>` element 20 degrees along the X-axis: | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: skew(20deg); /* IE 9 */ | ||
|  |   -webkit-transform: skew(20deg); /* Safari */ | ||
|  |   transform: skew(20deg); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## The matrix() Method
 | ||
|  | 
 | ||
|  | The `matrix()` method combines all the 2D transform methods into one. | ||
|  | 
 | ||
|  | The matrix() method take six parameters, containing mathematic functions, which | ||
|  | allows you to rotate, scale, move (translate), and skew elements. | ||
|  | 
 | ||
|  | The parameters are as follow: | ||
|  | matrix(scaleX(),skewY(),skewX(),scaleY(),translateX(),translateY()) | ||
|  | 
 | ||
|  | ### Example:
 | ||
|  | 
 | ||
|  | ```css | ||
|  | div { | ||
|  |   -ms-transform: matrix(1, -0.3, 0, 1, 0, 0); /* IE 9 */ | ||
|  |   -webkit-transform: matrix(1, -0.3, 0, 1, 0, 0); /* Safari */ | ||
|  |   transform: matrix(1, -0.3, 0, 1, 0, 0); | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | ## CSS3 Transform Properties
 | ||
|  | 
 | ||
|  | The following table lists all the 2D transform properties: | ||
|  | 
 | ||
|  | | Property         | Description                                               | | ||
|  | | ---------------- | --------------------------------------------------------- | | ||
|  | | transform        | Applies a 2D or 3D transformation to an element           | | ||
|  | | transform-origin | Allows you to change the position on transformed elements | | ||
|  | 
 | ||
|  | ## 2D Transform Methods
 | ||
|  | 
 | ||
|  | | Function              | Description                                                               | | ||
|  | | --------------------- | ------------------------------------------------------------------------- | | ||
|  | | matrix(n,n,n,n,n,n)   | Defines a 2D transformation, using a matrix of six values                 | | ||
|  | | translate(x,y)        | Defines a 2D translation, moving the element along the X- and the Y-axis  | | ||
|  | | translateX(n)         | Defines a 2D translation, moving the element along the X-axis             | | ||
|  | | translateY(n)         | Defines a 2D translation, moving the element along the Y-axis             | | ||
|  | | scale(x,y)            | Defines a 2D scale transformation, changing the elements width and height | | ||
|  | | scaleX(n)             | Defines a 2D scale transformation, changing the element's width           | | ||
|  | | scaleY(n)             | Defines a 2D scale transformation, changing the element's height          | | ||
|  | | rotate(angle)         | Defines a 2D rotation, the angle is specified in the parameter            | | ||
|  | | skew(x-angle,y-angle) | Defines a 2D skew transformation along the X- and the Y-axis              | | ||
|  | | skewX(angle)          | Defines a 2D skew transformation along the X-axis                         | | ||
|  | | skewY(angle)          | Defines a 2D skew transformation along the Y-axis                         | | ||
|  | 
 | ||
|  | ## More Information:
 | ||
|  | 
 | ||
|  | * https://css-tricks.com/almanac/properties/t/transform/ | ||
|  | * https://www.w3schools.com/css/css3_2dtransforms.asp | ||
|  | * https://developer.mozilla.org/en-US/docs/Web/CSS/transform |