transform, will-change, opacity 같은 속성을 썼더니 갑자기 애니메이션이 부드러워지는 것을 쉽게 확인할 수 있을 것이다.
이것은 브라우저가 GPU 가속을 써줬기 때문이다.
브라우저가 일부 화면 그리기 작업을 CPU 대신 GPU(그래픽 카드)에 맡겨서애니메이션을 더 부드럽게 만드는 최적화 기법
transform, opacity, filter 같은 시각적 속성을 빠르게 처리할 수 있다.보통 웹페이지는 모든 요소를 한 번에 그리는 게 아니라, 다음과 같은 3단계 렌더링 과정을 거친다.
| 속성/상황 | GPU 가속 유도 여부 | 설명 |
|---|---|---|
transform (scale, translate) | 강하게 유도 | 대표적인 GPU 가속 속성 |
opacity | 유도 | 투명도 변화 |
will-change: transform | 사전 예약 | “이거 곧 바뀔 거야”라고 미리 알려줌 |
filter, backdrop-filter | 유도 | 흐림/명암 등 필터 |
video, canvas, iframe | 유도 | 자체적으로 레이어 분리 필요 |
position: fixed + z-index | 조건부 유발 | 뷰포트 고정 + z-index 높으면 유발 가능 |
아무 요소나 GPU로 넘기면 안 된다.
1. F12 → Rendering 탭 켜기
2. 아래 옵션 체크:
테두리에 노란색/초록색 선이 보이면 GPU 레이어가 분리된 상태