Properties

Properties

Editing
  • account_tree
  • bug_report

matrix()

6개의 매개 변수 값을 이용해서 2차원적인 변환 처리를 해준다.

설명

매개 변수의 타입은 소수를 포함한 정수이다. 6개의 매개 변수 값은 차례대로 scaleX(), skewY(), skewX(), scaleY(), translateX(), translateY() 함수 값을 의미한다. rotate() 함수와 연결되는 값은 없지만 아래의 기술 문서를 보면은 matrix() 함수로 회전도 가능하다.

한편으로 matrix() 함수의 인수를 보면 직관적이지 않아 차라리 해당 전용 변형 함수를 사용하는 것이 더 좋을지도 모른다. 반대로 본다면 이러한 이유로 전용 함수를 별도로 준비했을 것이라 추측한다. 하지만 matrix() 함수가 익숙하다면 자바스크립트 로직으로 정교한 애니메이션 작업을 하고자 할 때 유용하다. 그리고 한 요소에게 동시에 다양한 변형을 주고자 한다면 직관적이지 않더라도 코드의 효율면에서도 matrix() 함수가 더 장점을 갖는다.

버전 명세

Modules
Module NameStatusSummary
CSS Transforms Module Level 1추천 후보

Last review date: 2022-11-17

기술 문서

CSS에서 행렬의 사용

수학적으로 모든 변환 함수는 다음 형식의 4x4 변환 행렬로 나타낼 수 있다.

$$ \begin{pmatrix} m11 & m21 & m31 & m41 \\ m12 & m22 & m32 & m42 \\ m13 & m23 & m33 & m43 \\ m14 & m24 & m34 & m44 \end{pmatrix}$$

matrix() 함수를 사용한 변형 예

scale()

$$ matrix(1.5, 0, 0, 1.5, 0, 0)=\begin{pmatrix} 1.5(scaleX) & 0(skewX) & 0 & 0(translateX) \\ 0(skewY) & 1.5(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

scaleX()

$$ matrix(1.5, 0, 0, 1, 0, 0)=\begin{pmatrix} 1.5(scaleX) & 0(skewX) & 0 & 0(translateX) \\ 0(skewY) & 1(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

scaleY()

$$ matrix(1, 0, 0, 1.5, 0, 0)=\begin{pmatrix} 1(scaleX) & 0(skewX) & 0 & 0(translateX) \\ 0(skewY) & 1.5(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

translateX()

$$ matrix(1, 0, 0, 1, 50, 0)=\begin{pmatrix} 1(scaleX) & 0(skewX) & 0 & 50(translateX) \\ 0(skewY) & 1(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

translateY()

$$ matrix(1, 0, 0, 1, 0, 50)=\begin{pmatrix} 1(scaleX) & 0(skewX) & 0 & 0(translateX) \\ 0(skewY) & 1(scaleY) & 0 & 50(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

translate()

$$ matrix(1, 0, 0, 1, 50, 50)=\begin{pmatrix} 1(scaleX) & 0(skewX) & 0 & 50(translateX) \\ 0(skewY) & 1(scaleY) & 0 & 50(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

skewX()

$$ matrix(1, 0, tan(15), 1, 0, 0)=\begin{pmatrix} 1(scaleX) & tan15(skewX) & 0 & 0(translateX) \\ 0(skewY) & 1(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

skewY()

$$ matrix(1, tan(15), 0, 1, 0, 0)=\begin{pmatrix} 1(scaleX) & 0(skewX) & 0 & 0(translateX) \\ tan15(skewY) & 1(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

skew()

$$ matrix(1, tan(15), tan(15), 1, 0, 0)=\begin{pmatrix} 1(scaleX) & tan15(skewX) & 0 & 0(translateX) \\ tan15(skewY) & 1(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

rotate()

$$ matrix(cos(180), sin(180), sin(-180), cos(180), 0, 0)=\begin{pmatrix} cos180(scaleX) & -sin180(skewX) & 0 & 0(translateX) \\ sin180(skewY) & cos180(scaleY) & 0 & 0(translateY) \\ 0& 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}$$

지원 웹브라우저