matrix()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.

The matrix() CSS function defines a homogeneous 2D transformation matrix. Its result is a <transform-function> data type.

Try it

Note: matrix(a, b, c, d, tx, ty) is a shorthand for matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1).

Syntax

The matrix() function is specified with six values. The constant values are implied and not passed as parameters; the other parameters are described in the column-major order.

css
matrix(a, b, c, d, tx, ty)

Values

a b c d

Are <number>s describing the linear transformation.

tx ty

Are <number>s describing the translation to apply.

Cartesian coordinates on ℝ^2 Homogeneous coordinates on ℝℙ^2 Cartesian coordinates on ℝ^3 Homogeneous coordinates on ℝℙ^3
( a c b d ) \begin{pmatrix} a & c \\ b & d \end{pmatrix}
( a c tx b d ty 0 0 1 ) \left( \begin{array}{ccc} a & c & tx \\ b & d & ty \\ 0 & 0 & 1 \\ \end{array} \right)
( a c tx b d ty 0 0 1 ) \left( \begin{array}{ccc} a & c & tx \\ b & d & ty \\ 0 & 0 & 1 \\ \end{array} \right)
( a c 0 tx b d 0 ty 0 0 1 0 0 0 0 1 ) \left( \begin{array}{cccc} a & c & 0 & tx \\ b & d & 0 & ty \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right)
[a b c d tx ty]

The values represent the following functions: matrix(scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY())

Examples

HTML

html
<div>Normal</div>
<div class="changed">Changed</div>

CSS

css
div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.changed {
  transform: matrix(1, 2, -1, 1, 80, 80);
  background-color: pink;
}

Result

Specifications

Specification
CSS Transforms Module Level 1
# funcdef-transform-matrix

Browser compatibility

BCD tables only load in the browser

See also