Skip to Content
BlogCSS 정리기초 동적 효과, Transform & Transition

기초 동적 효과, Transform & Transition

transform은 요소의 형태나 위치를 변형하는 속성이다.
transition은 속성 값이 변할 때 부드럽게 전환되도록 애니메이션을 추가하는 속성이다.
두 속성을 함께 사용하면 자연스러운 인터랙션 효과를 만들 수 있다.



Transform

요소를 이동, 확대·축소, 회전, 기울이기 등 시각적으로 변형한다.
실제 문서 흐름에는 영향을 주지 않는다.

① translate

요소를 x축, y축으로 이동한다.

.box { transform: translateX(20px); /* 오른쪽으로 20px */ transform: translateY(-10px); /* 위쪽으로 10px */ transform: translate(20px, -10px); /* x, y 동시 */ }

② scale

요소를 확대하거나 축소한다. 1이 원래 크기이다.

.box { transform: scale(1.2); /* 1.2배 확대 */ transform: scale(0.8); /* 0.8배 축소 */ transform: scaleX(1.5); /* 가로만 1.5배 */ transform: scaleY(0.5); /* 세로만 0.5배 */ }

③ rotate

요소를 회전한다. 양수면 시계 방향, 음수면 반시계 방향이다.

.box { transform: rotate(45deg); /* 시계 방향 45도 */ transform: rotate(-90deg); /* 반시계 방향 90도 */ }

④ skew

요소를 기울인다.

.box { transform: skewX(20deg); /* x축 기준 기울이기 */ transform: skewY(10deg); /* y축 기준 기울이기 */ }

여러 transform 동시 적용

공백으로 구분해 여러 transform을 한 번에 적용할 수 있다.

.box { transform: translateY(-10px) scale(1.1) rotate(5deg); }

여러 transform을 적용할 때 순서에 따라 결과가 달라질 수 있다.

자주 사용하는 transform 패턴 (중앙정렬)

요소를 부모 컨테이너의 정중앙에 배치할 때 유용하게 사용된다.

.box-parenet { position: relative; width: 300px; height: 300px; } .box { position: absolute; top: 50%; left: 50%; /* 요소 너비/높이의 50%만큼 역방향 이동 */ transform: translate(-50%, -50%); width: 100px; height: 100px; background-color: #3b82f6; }


Transition

CSS 속성이 변할 때 즉시 바뀌지 않고 지정한 시간 동안 부드럽게 전환된다.

.box { transition-property: transform; /* 전환할 속성 */ transition-duration: 0.3s; /* 전환 시간 */ transition-timing-function: ease; /* 가속 곡선 */ transition-delay: 0s; /* 시작 전 대기 시간 */ }

② transition 단축 속성

속성 시간 timing-function delay 순서로 작성한다.

.box { /* 단일 속성 */ transition: transform 0.3s ease; /* 여러 속성 — 쉼표로 구분 */ transition: transform 0.3s ease, background 0.2s ease-in, opacity 0.4s ease-out; /* 모든 속성 */ transition: all 0.3s ease; }

all은 편리하지만 불필요한 속성까지 감시하므로 성능에 영향을 줄 수 있다.
변화가 필요한 속성만 명시하는 것을 권장한다.

③ timing-function

전환의 속도 변화 패턴을 지정한다.

값설명
ease기본값. 천천히 시작, 빠르게, 천천히 끝
linear일정한 속도
ease-in천천히 시작
ease-out천천히 끝
ease-in-out천천히 시작, 천천히 끝
cubic-bezier(x1,y1,x2,y2)커스텀 곡선
.box { transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); /* 살짝 튀어오르는 효과 */ }


마지막 수정