CSS 전환(transition) & 변환(transform)


CSS의 Transition, Transform 속성에 관해 간단히 적어봅니다.

Transition(전환)

CSS 속성의 시작과 끝을 지정하여 중간 상태를 애니메이션을 해주는 속성

개별 속성

값 의미 기본값
transition-property 전환 효과를 사용할 속성 이름 all
transition-duration 전환 효과의 지속시간 설정 0s
transition-timing-function 타이밍 함수(cubic-bezier) 지정 ease
transition-delay 전환 효과의 대기시간 설정 0s


다음과 같이 사용이 가능하다.

.box {
  width: 100px;
  height: 100px;
  background: lightgray;
  transition: width 2s linear, background 1s 0.5s;
}

.box:hover {
  width: 300px;
  background: aqua;
}

Transform(변환)

요소를 변환(크기, 위치, 기울림, 회전)하는 속성으로 2d, 3d로의 가능하며 좀 복잡하다.

Transform 속성

값 의미 기본값
transform-origin 요소 변환의 기준점 설정 중앙
transform-style 3D 변환 요소의 자식요소도 3D 변환 사용여부  
perspective 하위 요소 관찰 원근거리 설정  
perspective-origin 원근거리 기준점 설정  
backface-visibility 3D 변환 시 회전된 요소 뒷면 숨김 설정  

아래의 변환 함수들 외에 아래 처럼 position등 사용해서 전환등을 하는 등의 효과를 줄 수 있지만 이는 최적화 된 방법이 아니다.

.box {
  width: 100px;
  height: 100px;
  background: lightgray;
  transition: all 2s linear;
  position: absolute;
  top: 0;
  left: 0;
}

.box:hover {
  position: absolute;
  top: 200px;
  left: 200px;
}

Transform 2D 변환함수

값 의미 비고
translate(x, y) 이동(x, y)  
translateX(x) 이동(x)  
translateY(y) 이동(y)  
scale(x, y) 크기(x, y) 배수
scaleX(x) 크기(x) 배수
scaleY(y) 크기(y) 배수
rotate(deg) 회전  
skew(x-deg, y-deg) 기울임(x, y)  
skewX(x-deg) 기울임(x)  
skewY(y-deg) 기울임(y)  
matrix(n * 6) 2차원 변환 효과  

Transform 3D 변환함수

값 의미 비고
translate3d(x, y, z) 이동(x, y, z)  
translateZ(z) 이동(z)  
scale3d(x, y, z) 크기(x, y, z) 배수
scaleZ(z) 크기(z) 배수
rotate3d(x, y, z, a) 회전(x, y, z, deg)  
rotateX(x) 회전(x)  
rotateY(y) 회전(y)  
rotateZ(z) 회전(z)  
perspective(n) 원근법(거리)  
matrix(n * 16) 3차원 변환 효과  

최적화 관련

사실 Transition의 타이밍 함수는 cubic-bezier로 브라우저가 인식하여 동작한다. 이와 마찬가지로 Transform의 함수 역시 matrix로 변환하여 동작한다. 상기 함수들이 직관적으로 사용하기 어려워 다양한 함수를 제공한 것이다. 브라우저가 읽고 동작하는데 있어서는 이 함수들을 적용시켜주는 부분이 좋다.