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
 |