files/en-us/web/css/reference/properties/transform/index.md
The transform CSS property lets you rotate, scale, skew, or translate an element.
It modifies the coordinate space of the CSS visual formatting model.
If the property has a value different from none, a stacking context will be created.
In that case, the element will act as a containing block for any position: fixed; or position: absolute; elements that it contains.
You can also use the individual transform properties: {{cssxref('translate')}}, {{cssxref('rotate')}}, and {{cssxref('scale')}}. These properties are applied in the order: translate, rotate, scale, and finally transform.
[!WARNING] Only transformable elements can be
transformed. That is, all elements whose layout is governed by the CSS box model except for: non-replaced inline boxes, table-column boxes, and table-column-group boxes.
{{InteractiveExample("CSS Demo: transform")}}
transform: matrix(1, 2, 3, 4, 5, 6);
transform: translate(120px, 50%);
transform: scale(2, 0.5);
transform: rotate(0.5turn);
transform: skew(30deg, 20deg);
transform: scale(0.5) translate(-100%, -100%);
<section id="default-example">
</section>
/* Keyword values */
transform: none;
/* Function values */
transform: matrix(1, 2, 3, 4, 5, 6);
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
transform: perspective(17px);
transform: rotate(0.5turn);
transform: rotate3d(1, 2, 3, 10deg);
transform: rotateX(10deg);
transform: rotateY(10deg);
transform: rotateZ(10deg);
transform: translate(12px, 50%);
transform: translate3d(12px, 50%, 3em);
transform: translateX(2em);
transform: translateY(3in);
transform: translateZ(2px);
transform: scale(2, 0.5);
transform: scale3d(2.5, 1.2, 0.3);
transform: scaleX(2);
transform: scaleY(0.5);
transform: scaleZ(0.3);
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);
/* Multiple function values */
transform: translateX(10px) rotate(10deg) translateY(5px);
transform: perspective(500px) translate3d(10px, 0, 20px) rotateY(30deg);
/* Global values */
transform: inherit;
transform: initial;
transform: revert;
transform: revert-layer;
transform: unset;
The transform property may be specified as either the keyword value none or as one or more <transform-function> values.
none
Scaling/zooming animations are problematic for accessibility, as they are a common trigger for certain types of migraine. If you need to include such animations on your website, you should provide a control to allow users to turn off animations, preferably site-wide.
Also, consider making use of the {{cssxref("@media/prefers-reduced-motion", "prefers-reduced-motion")}} media feature — use it to write a media query that will turn off animations if the user has reduced animation specified in their system preferences.
Find out more:
{{CSSInfo}}
{{csssyntax}}
<div>Transformed element</div>
div {
border: solid red;
transform: translate(30px, 20px) rotate(20deg);
width: 140px;
height: 60px;
}
{{EmbedLiveSample("Translating_and_rotating_an_element", "400", "160")}}
The order of transform functions matters. In this example, two boxes are rotated and translated by the same values; only the transform function order is different.
<div class="original"></div>
<div class="one">1</div>
<div class="two">2</div>
div {
height: 200px;
width: 200px;
position: absolute;
left: 200px;
top: 50px;
font-size: 4rem;
line-height: 200px;
text-align: center;
}
.original {
border: 1px dashed;
}
.original::before,
.original::after {
content: "";
position: absolute;
top: 100px;
width: 500px;
left: -150px;
height: 1px;
border-top: 2px dotted;
}
.original::after {
transform: rotate(135deg);
}
.one {
background-color: #cccccc;
}
.two {
background-color: #d6bb72;
}
.one {
transform: translateX(200px) rotate(135deg);
}
.two {
transform: rotate(135deg) translateX(200px);
}
{{EmbedLiveSample("Transform_order", "400", "460")}}
When an element is rotated before being translated, the translate direction is on the rotated axis. The axis as indicated with the dotted lines.
Please see Using CSS transforms and {{cssxref("<transform-function>")}} for more examples.
{{Specifications}}
{{Compat}}
skew property).