2D transforms allow you to move, rotate, scale, and skew HTML elements.
The transform property creates the transformations.
The property values are functions, such as translate
, scale
, and rotate
.
This element is rotated using a transform.
Hover over the element to see it rotate back.
<style>
.transform {
background-color: aliceblue;
border: 1px solid #555;
padding: 15px;
margin: 45px 0 35px 0;
width: 250px;
transform: rotate(15deg);
}
.transform:hover {
transform: none;
cursor: pointer;
}
</style>
<div class="transform">
This element is rotated by 15 degrees
</div>
The values of the transform
property are functions.
Here is a list of the available 2D transformation functions.
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 element's 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 |
The translate
function moves an element along the x and y-axis.
This example has a standard element and a translated element.
<style>
.standard {
background-color: aliceblue;
border: 1px solid black;
width: 300px;
padding: 25px;
}
.standard.translate {
transform: translate(50px, 40px);
}
</style>
<div class="standard">
A standard element
</div>
<div class="standard translate">
A translated element
</div>
The scale
function resizes an element along the x- and y-axis.
This example has a standard element and a scaled element.
The scaled element has expanded horizontally and is compressed vertically.
<style>
.standard {
background-color: aliceblue;
border: 1px solid black;
width: 300px;
padding: 25px;
}
.standard.scale {
transform: scale(1.1, .9);
}
</style>
<div class="standard">
A standard element
</div>
<div class="standard scale">
A scaled element
</div>
The rotate
function rotates an element by a specified angle.
An element can be rotated clockwise or counter-clockwise.
This example has a standard element and a rotated element.
<style>
.standard {
background-color: aliceblue;
border: 1px solid black;
width: 300px;
padding: 25px;
margin-top: 20px;
}
.standard.rotate {
transform: rotate(20deg);
}
</style>
<div class="standard">
A standard element
</div>
<div class="standard rotate">
A rotated element.
</div>
The skew
function skews an element along the x and y-axis.
This example has a standard element and a skewed element.
<style>
.standard {
background-color: aliceblue;
border: 1px solid black;
width: 300px;
padding: 25px;
margin-top: 20px;
}
.standard.skew {
transform: skew(-35deg, -5deg);
}
</style>
<div class="standard">
A standard element
</div>
<div class="standard skew">
A skewed element
</div>
The table below are the properties used for 2D transform.
Property | Description |
---|---|
transform | Applies a 2D or 3D transformation to an element |
transform-origin | Allows you to change the position on transformed elements |
This table shows when 2D transforms support started for each browser.
Chrome
|
36.0 | Jul 2014 |
Firefox
|
16.0 | Oct 2012 |
IE/Edge
|
11.0 | Oct 2013 |
Opera
|
23.0 | Jul 2013 |
Safari
|
9.0 | Sep 2015 |