Widely availableSupported across all major browsers. Safe to use in production.

Overview

The transform CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.

Browser support

Feature Desktop Mobile
Chrome
Edge
Firefox
Safari
Chrome Android
Safari iOS
36
12
16
9
36
9
Other

The transform-origin CSS property sets the origin for an element's transformations.

36
12
16
9
36
9
CSS property
bottom
1
12
3.5
2
18
1
center
1
12
3.5
2
18
1
left
1
12
3.5
2
18
1
right
1
12
3.5
2
18
1
three value syntax

Three-value syntax

12
12
10
5
18
3.2
top
1
12
3.5
2
18
1
none
1
12
3.5
3.1
18
3.2
Other

The CSS data type represents an angle value expressed in degrees, gradians, radians, or turns. It is used, for example, in gradients and in some transform functions.

2
12
3.6
4
18
3.2

The CSS data type represents a value that can be either an angle or a percentage.

2
12
3.6
4
18
3.2
CSS type
deg
2
12
3.6
4
18
3.2
grad
2
12
3.6
4
18
3.2
rad
2
12
3.6
4
18
3.2
turn
2
12
13
4
18
3.2
Other

The CSS data type denotes a two-dimensional coordinate used to set a location relative to an element box. It is used in the background-position, object-position, mask-position offset-position, offset-anchor and transform-origin properties.

1
12
1
1
18
1
CSS type
four value syntax

Four-value syntax for offset from any edge

25
12
13
7
25
7
keyword value syntax

Syntax combining a keyword and `<length>` or `<percentage>`

1
12
1
1
18
1
Other

The CSS data type represents a transformation that affects an element's appearance. Transformation functions can rotate, resize, distort, or move an element in 2D or 3D space. It is used in the transform property.

1
12
3.5
3.1
18
3.2
CSS type

The matrix() CSS function defines a homogeneous 2D transformation matrix. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The rotate() CSS function defines a transformation that rotates an element around a fixed point on the 2D plane, without deforming it. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The scale() CSS function defines a transformation that resizes an element on the 2D plane. Because the amount of scaling is defined by a vector [sx, sy], it can resize the horizontal and vertical dimensions at different scales. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The scaleX() CSS function defines a transformation that resizes an element along the x-axis (horizontally). Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The scaleY() CSS function defines a transformation that resizes an element along the y-axis (vertically). Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The skew() CSS function defines a transformation that skews an element on the 2D plane. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The skewX() CSS function defines a transformation that skews an element in the horizontal direction on the 2D plane. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The skewY() CSS function defines a transformation that skews an element in the vertical direction on the 2D plane. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The translate() CSS function repositions an element in the horizontal and/or vertical directions. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The translateX() CSS function repositions an element horizontally on the 2D plane. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2

The translateY() CSS function repositions an element vertically on the 2D plane. Its result is a &lt;transform-function&gt; data type.

1
12
3.5
3.1
18
3.2
1+Supported (version) Not supported Has note Sub-feature descriptions sourced from MDN Web Docs (CC BY-SA 2.5)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (1)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (12)
Notes 2 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (49)
  • Available with a vendor prefix: -moz- (3.5)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (3.1)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (18)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (3.2)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (1)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (12)
Notes 2 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (49)
  • Available with a vendor prefix: -moz- (3.5)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (2)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (18)
Notes 1 item(s)
Compatibility
  • Available with a vendor prefix: -webkit- (1)
Notes 1 item(s)
Implementation note
  • Before Firefox 16, the translation values of `matrix()` could be `<length>`s, in addition to the standard `<number>`.
Notes 1 item(s)
Removed
  • Firefox 14 removed experimental support for `skew()`, but it was reintroduced in Firefox 15.

Syntax

CSS
.rotate { transform: rotate(45deg); }
.scale { transform: scale(1.5); }
.move { transform: translate(50px, 20px); }
.combined { transform: rotate(10deg) scale(1.2); }

Live demo

Rotate Rotate

CSS Rotate rotate demo.

PreviewFullscreen

Scale Scale

CSS Scale scale demo.

PreviewFullscreen

Skew Skew + Move

CSS Skew skew + move demo.

PreviewFullscreen

Use cases

  • Using 2D transforms

    The transform CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.

Cautions

  • May not be supported in older browsers.

Accessibility

  • Make sure visual changes are conveyed appropriately to assistive technology.

Powered by web-features