CSS 입문 | CSS3 변형 | 3D Transform

변형(Transform)

CSS3에서는 transform 속성을 사용하여 HTML 요소의 모양, 크기 위치 등을 입체적으로 변형시킬 수 있다.

CSS3 3D 변형(transform) 지원 버전

CSS3 3D 변형(transform)을 지원하는 주요 웹 브라우저의 버전은 다음과 같다.
또한, 브라우저별로 벤더 프리픽스(vendor prefix)를 이용해 이 기능을 최초로 지원한 버전도 같이 표기했다.

속성 ie chrome firefox safari opera
transform / transform-origin / perspective / perspective-origin / backface-visibility 10.0 36.0 / 12.0 -webkit- 16.0 / 10.0 -moz- 9.0 / 4.0 -webkit- 23.0 / 15.0 -webkit
transform-style 11.0 36.0 / 12.0 -webkit- 16.0 / 10.0 -moz- 9.0 / 4.0 -webkit- 23.0 / 15.0 -webkit

3D 변형(transform)

3D 변형(transform)을 위해 제공되는 메소드(method)는 다음과 같다.

  1. rotate()
  2. translate()
  3. scale()
  4. matrix()
  5. perspective()

rotateX() 메소드

rotateX() 메소드는 해당 요소를 주어진 각도만큼 x축을 기준으로 회전시킨다. 주어진 각도가 양수이면 x축 양의 방향으로, 음수이면 x축 음의 방향으로 회전시킨다.

<style>
    #rotate_01 {
        -webkit-transform: rotateX(20deg);
        transform: rotateX(20deg);
    }
</style>

rotateY() 메소드

rotateY() 메소드는 해당 요소를 주어진 각도만큼 y축을 기준으로 회전시킨다.
주어진 각도가 양수이면 y축 양의 방향으로, 음수이면 y축 음의 방향으로 회전시킨다.

<style>
    #rotate_01 {
        -webkit-transform: rotateY(20deg);
        transform: rotateY(20deg);
    }
</style>

rotateZ() 메소드

rotateZ() 메소드는 해당 요소를 주어진 각도만큼 z축을 기준으로 회전시킨다.
주어진 각도가 양수이면 z축 양의 방향으로, 음수이면 z축 음의 방향으로 회전시킨다.

<style>
    #rotate_01 {
        -webkit-transform: rotateZ(20deg);
        transform: rotateZ(20deg);
    }
</style>

translate3d() 메소드

translate3d() 메소드는 현재 위치에서 해당 요소를 주어진 x축과 y축, z축의 거리만큼 이동시킨다.
주어진 거리가 양수이면 해당 축의 양의 방향으로, 음수이면 해당 축의 음의 방향으로 이동시킨다.

<style>
    #trans_01 {
        -webkit-transform: translate(100px, 50px);
        -ms-transform: translate(100px, 50px);
        transform: translate(100px, 50px);
    }
    #trans_02 {
        -webkit-transform: translate3d(100px, 50px, -150px);
        transform: translate3d(100px, 50px, -150px);
    }
</style>

rotate3d(), translate3d(), scale3d() 메소드와 같이 입체적으로 보여지는 3D 변형에 관련된 메소드는 원근감을 표현할 기준을 명시해야 한다.
위의 예제에서는 perspective() 메소드를 사용하여 원근감을 표현하기 위해 사용할 픽셀 수를 500px로 설정하고 있다.

CSS3 3D transform 속성

속성 설명
transform 요소에 2D 또는 3D 변형(transform)을 적용함.
transform-origin 요소에 변형(transform)을 적용하는 변환 중심을 설정함.
transform-style 요소에 변형을 적용할 때 그 변환이 자식(child) 요소들에게도 적용될지 안 될지를 설정함.
perspective 3D 요소에 원근감을 표현할 때 사용할 픽셀 수를 설정함.
perspective-origin 3D 요소에 원근감을 표현할 때 사용할 기준 축을 설정함.
backface-visibility 요소의 앞면만을 표현하고, 뒷면을 표현할지 안 할지를 설정함.

CSS3 3D transform 메소드

메소드 설명
matrix3d(n×16) 4x4 행렬을 이용한 16개의 매개변수로 모든 3D 변형 메소드를 한 번에 설정함.
rotate3d(x,y,z,angle) 해당 요소를 주어진 각도만큼 x축, y축과 z축을 기준으로 회전시킴.
rotateX(angle) 해당 요소를 주어진 각도만큼 x축을 기준으로 회전시킴.
rotateY(angle) 해당 요소를 주어진 각도만큼 y축을 기준으로 회전시킴.
rotateZ(angle) 해당 요소를 주어진 각도만큼 z축을 기준으로 회전시킴.
translate3d(x,y,z) 현재의 위치에서 해당 요소를 주어진 x축, y축과 z축의 거리만큼 이동시킴.
translateX(x) 현재의 위치에서 해당 요소를 주어진 x축의 거리만큼 이동시킴.
translateY(y) 현재의 위치에서 해당 요소를 주어진 y축의 거리만큼 이동시킴.
translateZ(z) 현재의 위치에서 해당 요소를 주어진 z축의 거리만큼 이동시킴.
scale3d(x,y,z) 해당 요소의 크기를 주어진 배율만큼 x축, y축과 z축 방향으로 늘리거나 줄임.
scaleX(x) 해당 요소의 x축 크기를 주어진 배율만큼 늘리거나 줄임.
scaleY(y) 해당 요소의 y축 크기를 주어진 배율만큼 늘리거나 줄임.
scaleZ(z) 해당 요소의 z축 크기를 주어진 배율만큼 늘리거나 줄임.
perspective(n) 3D 요소에 원근감을 표현할 때 사용할 픽셀 수를 설정함.