CSS Transition은 요소의 스타일이 변할 때 그 변화를 즉시가 아닌 부드럽게 진행되도록 만드는 기능이다. 버튼 호버 효과, 배경색 변화, 크기 변경 등 다양한 상황에서 사용자 경험을 한 단계 업그레이드할 수 있다.
기본적으로 CSS에서 스타일을 변경하면 즉시 적용된다. 예를 들어 버튼의 배경색을 파란색에서 빨간색으로 변경하면 순간적으로 색이 바뀐다. 하지만 transition을 사용하면 그 변화가 일정 시간에 걸쳐 부드럽게 진행된다.
변화를 적용할 CSS 속성을 지정한다.
.button {
transition-property: background-color;
}
자주 사용되는 값들:
background-color: 배경색 변화color: 글자색 변화width, height: 크기 변화opacity: 투명도 변화transform: 회전, 스케일, 이동all: 모든 속성의 변화에 적용변화가 얼마나 오래 진행될지를 지정한다. 단위는 초(s) 또는 밀리초(ms)이다.
.button {
transition-duration: 0.3s; /* 300밀리초 */
}
변화의 속도 패턴을 지정한다. 어떤 속도로 부드럽게 진행될 것인지 결정한다.
.button {
transition-timing-function: ease-in-out;
}
주요 값들:
linear: 처음부터 끝까지 같은 속도ease: 천천히 시작, 빨라졌다가 천천히 끝남 (기본값)ease-in: 처음에는 천천히, 나중에 빠름ease-out: 처음에는 빠르고, 나중에 천천히ease-in-out: ease와 비슷하지만 더 자연스러움cubic-bezier(n,n,n,n): 커스텀 속도 곡선애니메이션 시작을 지연시킨다.
.button {
transition-delay: 0.1s; /* 100밀리초 후 시작 */
}
네 가지 속성을 한 줄로 작성할 수 있다.
.button {
transition: [property] [duration] [timing-function] [delay];
transition: background-color 0.3s ease-in-out 0.1s;
}
.element {
transition: background-color 0.3s ease,
transform 0.5s ease-in-out,
opacity 0.2s linear;
}
이렇게 하면 각 속성마다 다른 속도와 타이밍 함수를 적용할 수 있다.
transition: all 남용: 모든 속성을 변화시키면 성능이 떨어질 수 있다. 필요한 속성만 지정하자.opacity와 transform 변화를 우선적으로 사용하자. 이 두 속성은 브라우저가 효율적으로 처리한다.width,height,left,top 변화는 피하자. 레이아웃 재계산이 일어나 성능이 떨어진다.transform: translateZ(0)을 추가하자..optimized-element {
transition: opacity 0.3s ease, transform 0.3s ease;
transform: translateZ(0); /* GPU 가속 활성화 */
}
CSS transition은 간단하면서도 매우 강력한 도구다. 올바르게 사용하면: