DOMMatrixReadOnly
interface represents a read-only 4×4 matrix, suitable for 2D and 3D operations. The
DOMMatrix
interrface—which is based upon
DOMMatrixReadOnly
—adds
mutability
, allowing you to alter the matrix after creating it.
A 4×4 matrix is suitable to describe any rotation and translation in 3D.
This interface should be available inside web workers , though some implementations doesn't allow it yet.
This interface doesn't inherit any properties.
is2D
只读
true
if the matrix was initialized as a 2D matrix. If
false
, the matrix is 3D.
isIdentity
只读
true
if the matrix is the
identity matrix
. The identity matrix is one in which every value is
0
except
those on the main diagonal from top-left to bottom-right corner (in other words, where the offsets in each direction are equal).
m11
,
m12
,
m13
,
m14
,
m21
,
m22
,
m23
,
m24
,
m31
,
m32
,
m33
,
m34
,
m41
,
m42
,
m43
,
m44
m11
透过
m14
are the first column,
m21
透过
m24
are the second column, and so forth.
a
,
b
,
c
,
d
,
e
,
f
Double-precision floating-point values representing the components of a 4×4 matrix which are required in order to perform 2D rotations and translations. These are aliases for specific components of a 4×4 matrix, as shown below.
| 2D | 3D equivalent |
|---|---|
a
|
m11
|
b
|
m12
|
c
|
m21
|
d
|
m22
|
e
|
m41
|
f
|
m42
|
This interface doesn't inherit any methods. None of the following methods alter the original matrix.
DOMMatrixReadOnly.flipX()
DOMMatrix
created by flipping the source matrix around its X-axis. This is equivalent to multiplying the matrix by
DOMMatrix(-1, 0, 0, 1, 0, 0)
. The original matrix is not modified.
DOMMatrixReadOnly.flipY()
DOMMatrix
created by flipping the source matrix around its Y-axis. This is equivalent to multiplying the matrix by
DOMMatrix(1, 0, 0, -1, 0, 0)
. The original matrix is not modified.
DOMMatrixReadOnly.inverse()
DOMMatrix
created by inverting the source matrix. If the matrix cannot be inverted, the new matrix's components are all set to
NaN
及其
is2D
property is set to
false
. The original matrix is not altered.
DOMMatrixReadOnly.multiply()
DOMMatrix
created by computing the dot product of the source matrix and the specified matrix:
A
⋅
B
. If no matrix is specified as the multiplier, the matrix is multiplied by a matrix in which every element is
0
except
the bottom-right corner and the element immediately above and to its left:
m
33
and
m
34
. These have the default value of
1
. The original matrix is not modified.
DOMMatrixReadOnly.rotateAxisAngle()
DOMMatrix
created by rotating the source matrix by the given angle around the specified vector. The original matrix is not modified.
DOMMatrixReadOnly.rotate()
DOMMatrix
created by rotating the source matrix around each of its axes by the specified number of degrees. The original matrix is not altered.
DOMMatrixReadOnly.rotateFromVector()
DOMMatrix
created by rotating the source matrix by the angle between the specified vector and
(1, 0)
. The original matrix is not modified.
DOMMatrixReadOnly.scale()
DOMMatrix
created by scaling the source matrix by the amount specified for each axis, centered on the given origin. By default, the X and Z axes are scaled by
1
and the Y axis has no default scaling value. The default origin is
(0, 0, 0)
. The original matrix is not modified.
DOMMatrixReadOnly.scale3d()
DOMMatrix
created by scaling the source 3D matrix by the given factor along all its axes, centered on the specified origin point. The default origin is
(0, 0, 0)
. The original matrix is not modified.
DOMMatrixReadOnly.scaleNonUniform()
DOMMatrix
created by applying the specified scaling on the X, Y, and Z axes, centered at the given origin. By default, the Y and Z axes' scaling factors are both
1
, but the scaling factor for X must be specified. The default origin is
(0, 0, 0)
. The original matrix is not changed.
DOMMatrixReadOnly.skewX()
DOMMatrix
created by applying the specified skew transformation to the source matrix along its X-axis. The original matrix is not modified.
DOMMatrixReadOnly.skewY()
DOMMatrix
created by applying the specified skew transformation to the source matrix along its Y-axis. The original matrix is not modified.
DOMMatrixReadOnly.toFloat32Array()
Float32Array
containing all 16 elements (
m11
,
m12
,
m13
,
m14
,
m21
,
m22
,
m23
,
m24
,
m31
,
m32
,
m33
,
m34
,
m41
,
m42
,
m43
,
m44
) which comprise the matrix. The elements are stored into the array as single-precision floating-point numbers in column-major (colexographical access, or "colex") order. (In other words, down the first column from top to bottom, then the second column, and so forth.)
DOMMatrixReadOnly.toFloat64Array()
Float64Array
containing all 16 elements (
m11
,
m12
,
m13
,
m14
,
m21
,
m22
,
m23
,
m24
,
m31
,
m32
,
m33
,
m34
,
m41
,
m42
,
m43
,
m44
) which comprise the matrix. The elements are stored into the array as double-precision floating-point numbers in column-major (colexographical access access or "colex") order. (In other words, down the first column from top to bottom, then the second column, and so forth.)
DOMMatrixReadOnly.toJSON()
DOMMatrixReadOnly
对象。
DOMMatrixReadOnly.toString()
创建并返回
DOMString
object which contains a string representation of the matrix in CSS matrix syntax, using the appropriate CSS matrix notation. See the
matrix()
CSS function for details on this syntax.
For a 2D matrix, the elements
a
透过
f
are listed, for a total of six values and the form
matrix(
a
,
b
,
c
,
d
,
e
,
f
)
.
For a 3D matrix, the returned string contains all 16 elements and takes the form
matrix3d(
m
11
,
m
12
,
m
13
,
m
14
,
m
21
,
m
22
,
m
23
,
m
24
,
m
31
,
m
32
,
m
33
,
m
34
,
m
41
,
m
42
,
m
43
,
m
44
)
. See the CSS
matrix3d()
function for details on the 3D notation's syntax.
Throws an
InvalidStateError
exception if any of the elements in the matrix are non-finite (even if, in the case of a 2D matrix, the non-finite values are in elements not used by the 2D matrix representation).
DOMMatrixReadOnly.transformPoint()
DOMPoint
object containing the transformed point. Neither the matrix nor the original point are altered.
DOMMatrixReadOnly.translate()
DOMMatrix
containing a matrix calculated by translating the source matrix using the specified vector. By default, the vector is
(0, 0, 0)
. The original matrix is not changed.
This interface inherits methods from
DOMMatrixReadOnly
.
fromFloat32Array()
DOMMatrix
object given an array of single-precision (32-bit) floating-point values. If the array has six values, the result is a 2D matrix; if the array has 16 values, the result is a 3D matrix. Otherwise, a
TypeError
exception is thrown.
fromFloat64Array()
DOMMatrix
object given an array of double-precision (64-bit) floating-point values. If the array has six values, the result is a 2D matrix; if the array has 16 values, the result is a 3D matrix. Otherwise, a
TypeError
exception is thrown.
fromMatrix()
DOMMatrix
object given an existing matrix or a
DOMMatrixInit
dictionary which provides the values for its properties. If no matrix is specified, the matrix is initialized with every element set to
0
except
the bottom-right corner and the element immediately above and to its left:
m
33
and
m
34
. These have the default value of
1
.
| 规范 | 状态 | 注释 |
|---|---|---|
|
Geometry Interfaces Module Level 1
The definition of 'DOMMatrixReadOnly' in that specification. |
候选推荐 | 初始定义 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
DOMMatrixReadOnly
|
Chrome
61
|
Edge
79
|
Firefox 33 | IE No |
Opera
48
|
Safari 11 | WebView Android 61 |
Chrome Android
61
|
Firefox Android 33 |
Opera Android
48
|
Safari iOS 11 | Samsung Internet Android 8.0 |
DOMMatrixReadOnly()
构造函数
|
Chrome 57 | Edge 79 | Firefox 33 | IE No | Opera 44 | Safari 11 | WebView Android 61 | Chrome Android 57 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
a
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
b
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
c
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
d
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
e
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
f
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
flipX()
|
Chrome 54 | Edge 79 | Firefox 33 | IE No | Opera 41 | Safari 11 | WebView Android 61 | Chrome Android 54 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
flipY()
|
Chrome 54 | Edge 79 | Firefox 33 | IE No | Opera 41 | Safari 11 | WebView Android 61 | Chrome Android 54 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
fromMatrix()
static function
|
Chrome 55 | Edge 79 | Firefox 33 | IE No | Opera 42 | Safari 11 | WebView Android 61 | Chrome Android 55 | Firefox Android 33 | Opera Android 42 | Safari iOS 11 | Samsung Internet Android 8.0 |
inverse()
|
Chrome 55 | Edge 79 | Firefox 33 | IE No | Opera 42 | Safari 11 | WebView Android 61 | Chrome Android 55 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
is2D
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
isIdentity
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m11
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m12
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m13
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m14
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m21
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m22
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m23
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m24
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m31
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m32
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m33
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m34
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m41
|
Chrome 61 | Edge 79 | Firefox 33 | IE No | Opera 48 | Safari 11 | WebView Android 61 | Chrome Android 61 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m42
|
Chrome 61 | Edge 79 | Firefox 33 | IE No | Opera 48 | Safari 11 | WebView Android 61 | Chrome Android 61 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m43
|
Chrome 61 | Edge 79 | Firefox 33 | IE No | Opera 48 | Safari 11 | WebView Android 61 | Chrome Android 61 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
m44
|
Chrome 61 | Edge 79 | Firefox 33 | IE No | Opera 48 | Safari 11 | WebView Android 61 | Chrome Android 61 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
multiply()
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
rotate()
|
Chrome 56 | Edge 79 | Firefox 33 | IE No | Opera 43 | Safari 11 | WebView Android 61 | Chrome Android 56 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
rotateAxisAngle()
|
Chrome 56 | Edge 79 | Firefox 33 | IE No | Opera 43 | Safari 11 | WebView Android 61 | Chrome Android 56 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
rotateFromVector()
|
Chrome 56 | Edge 79 | Firefox 33 | IE No | Opera 43 | Safari 11 | WebView Android 61 | Chrome Android 56 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
scale()
|
Chrome 45 | Edge 79 |
Firefox
33
|
IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 |
Firefox Android
部分支持
33
|
Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
scale3d()
|
Chrome 45 | Edge 79 |
Firefox
33
|
IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 |
Firefox Android
33
|
Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
scaleNonUniform()
|
Chrome 45 — 56 | Edge No | Firefox 33 — 69 | IE No | Opera 32 — 43 | Safari No | WebView Android No | Chrome Android 45 — 56 | Firefox Android 33 | Opera Android 45 | Safari iOS No | Samsung Internet Android No |
scaleNonUniformSelf()
弃用
|
Chrome 45 — 56 | Edge No | Firefox 33 — 69 | IE No | Opera 32 — 43 | Safari No | WebView Android No | Chrome Android 45 — 56 | Firefox Android 33 | Opera Android 45 | Safari iOS No | Samsung Internet Android No |
skewX()
|
Chrome 54 | Edge 79 |
Firefox
33
|
IE No | Opera 41 | Safari 11 | WebView Android 61 | Chrome Android 54 |
Firefox Android
33
|
Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
skewY()
|
Chrome 54 | Edge 79 |
Firefox
33
|
IE No | Opera 41 | Safari 11 | WebView Android 61 | Chrome Android 54 |
Firefox Android
33
|
Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
toFloat32Array()
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
toFloat64Array()
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
toJSON()
|
Chrome 56 | Edge 79 | Firefox 33 | IE No | Opera 43 | Safari 11 | WebView Android 61 | Chrome Android 56 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
toString()
|
Chrome 54 | Edge 79 | Firefox 33 | IE No | Opera 41 | Safari 11 | WebView Android 61 | Chrome Android 54 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
transform()
|
Chrome 61 | Edge 79 |
Firefox
33
|
IE No | Opera 48 | Safari 11 | WebView Android 61 | Chrome Android 61 |
Firefox Android
33
|
Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
transformPoint()
|
Chrome 56 | Edge 79 | Firefox 33 | IE No | Opera 43 | Safari 11 | WebView Android 61 | Chrome Android 56 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
translate()
|
Chrome 45 | Edge 79 | Firefox 33 | IE No | Opera 32 | Safari 11 | WebView Android 61 | Chrome Android 45 | Firefox Android 33 | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
| Available in workers | Chrome 57 | Edge 79 | Firefox 69 | IE No | Opera 44 | Safari 11 | WebView Android 61 | Chrome Android 57 | Firefox Android No | Opera Android 45 | Safari iOS 11.3 | Samsung Internet Android 8.0 |
完整支持
部分支持
不支持
弃用。不要用于新网站。
见实现注意事项。
用户必须明确启用此特征。
DOMMatrix
, which is based on this one.
SVGMatrix
and
CSSMatrix
,
SVG
and
CSS
specific types that should be getting replaced by this interface.
matrix()
and
matrix3d()
functional notation that can be generated from this interface to be used in a CSS
transform
.