You’re reading the English version of this content since no translation exists yet for this locale. Help us translate this article!
This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
The rotate
CSS property allows you to specify rotation transforms individually and independently of the transform
property. This maps better to typical user interface usage, and saves having to remember the exact order of transform functions to specify in the transform
property.
Syntax
/* Keyword values */ rotate: none; /* Angle value */ rotate: 90deg; rotate: 0.25turn; rotate: 1.57rad; /* x, y, or z axis name plus angle */ rotate: x 90deg; rotate: y 0.25turn; rotate: z 1.57rad; /* Vector plus angle value */ rotate: 1 1 1 90deg;
Values
- angle value
- An
<angle>
specifying the angle to rotate the affected element through, around the Z axis. Equivalent to arotate()
(2D rotation) function. - x, y, or z axis name plus angle value
- The name of the axis you want to rotate the affected element around (
"x"
, "y
", or "z"
), plus an<angle>
specifying the angle to rotate the element through. Equivalent to arotateX()
/rotateY()
/rotateZ()
(3D rotation) function. - vector plus angle value
- Three
<number>
s representing an origin-centered vector that defines a line around which you want to rotate the element, plus an<angle>
specifying the angle to rotate the element through. Equivalent to arotate3d()
(3D rotation) function. none
- Specifies that no rotation should be applied.
Formal syntax
none | <angle> | [ x | y | z | <number>{3} ] && <angle>
Examples
HTML
<div> <p class="rotate">Rotation</p> </div>
CSS
* { box-sizing: border-box; } html { font-family: sans-serif; } div { width: 150px; margin: 0 auto; } p { padding: 10px 5px; border: 3px solid black; border-radius: 20px; width: 150px; font-size: 1.2rem; text-align: center; }
.rotate { transition: rotate 1s; } div:hover .rotate { rotate: 1 -0.5 1 180deg; }
Result
Specifications
Specification | Status | Comment |
---|---|---|
CSS Transforms Level 2 The definition of 'individual transforms' in that specification. |
Editor's Draft | Initial definition. |
Initial value | none |
---|---|
Applies to | transformable elements |
Inherited | no |
Media | visual |
Computed value | as specified |
Animation type | a transform |
Canonical order | per grammar |
Creates stacking context | yes |
Browser compatibility
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
rotate | Chrome No support No | Edge No support No | Firefox
Full support
60
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android
Full support
60
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
x, y, or z axis name plus angle value | Chrome No support No | Edge No support No | Firefox
Full support
65
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android
Full support
65
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
Legend
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- See implementation notes.
- See implementation notes.
- User must explicitly enable this feature.
- User must explicitly enable this feature.
See also
Note: skew
is not an independent transform
value