The matrix() CSS function defines a homogeneous 2D transformation matrix. Its result is a <transform-function> data type.
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.
Note: Until Firefox 16, Gecko accepted a <length> value for tx and ty.
matrix(a, b, c, d, tx, ty)
Values
abcd- Are
<number>s describing the linear transformation. txty- Are
<number>s describing the translation to apply.
| Cartesian coordinates on ℝ2 | Homogeneous coordinates on ℝℙ2 | Cartesian coordinates on ℝ3 | Homogeneous coordinates on ℝℙ3 |
|---|---|---|---|
<math display="inline">\begin{pmatrix}
& \\ & \\ \end{pmatrix}</math> |
<math display="inline">\begin{pmatrix}
& & \\ & & \\ & & \\ \end{pmatrix}</math> |
<math display="inline">\begin{pmatrix}
& & \\ & & \\ & & \\ \end{pmatrix}</math> |
<math display="inline">\begin{pmatrix}
& & & \\ & & & \\ & & & \\ & & & \\ \end{pmatrix}</math> |
[a b c d tx ty]
|
The values represent the following functions:
matrix( scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() )
Examples
HTML
<div>Normal</div>
<div class="changed">Changed</div>
CSS
div {
width: 80px;
height: 80px;
background-color: skyblue;
}
.changed {
transform: matrix(1, 2, -1, 1, 80, 80);
background-color: pink;
}
Result
Specifications
| Specification | Status | Comment |
|---|---|---|
| CSS Transforms Level 1The definition of 'matrix()' in that specification. | Working Draft | Initial definition |
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 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
<transform-function>
|
Chrome
Full support 1 |
Edge
Full support 12 |
Firefox Full support 3.5 |
IE Full support 9 Full support 9 Notes' Internet Explorer 9 supports 2D but not 3D transforms. In version 9, mixing 2D and 3D transform functions invalidates the entire property. |
Opera
Full support 10.5 |
Safari
Full support 3.1 |
WebView Android
Full support 2 |
Chrome Android
Full support 18 |
Firefox Android
Full support 4 |
Opera Android
Full support 11 |
Safari iOS
Full support 3.2 |
Samsung Internet Android
Full support 1.0 |
| 3D support | Chrome
Full support 12 |
Edge
Full support 12 |
Firefox
Full support 10 |
IE
Full support 10 |
Opera
Full support 15 |
Safari
Full support 4 |
WebView Android
Full support 3 |
Chrome Android
Full support 18 |
Firefox Android
Full support 10 |
Opera Android
Full support 14 |
Safari iOS
Full support 3.2 |
Samsung Internet Android
Full support 1.0 |
Legend
- Full support
- Full support
- See implementation notes.'
- See implementation notes.
See also
matrix() by Mozilla Contributors is licensed under CC-BY-SA 2.5.