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
 |