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
|