한 줄 요약 - 상태(레이아웃)를 바꾸기만 하면 브라우저가 변경 전/후를 비교해 항목을 부드럽게 트윈합니다.
이럴 때 필요해요
그리드-리스트 전환, 목록에서 상세로 확장 등에서 화면이 툭 끊기지 않게 하고 싶을 때.
어떻게 동작하나
항목에 view-transition-name 을 부여해 같은 요소로 인식시킨다.
document.startViewTransition(cb) 안에서 DOM을 바꾼다.
React는 콜백 안에서 flushSync로 동기 반영해야 정확히 캡처된다.
핵심은 이거예요
위치 애니메이션을 직접 안 짭니다. 이름만 같으면 브라우저가 알아서 모핑합니다.
놓치기 쉬운 것
같은 view-transition-name은 화면에 동시에 하나만 있어야 합니다.
미지원 브라우저/prefers-reduced-motion 폴백을 두세요.
이런 곳에 써요
갤러리 정렬/필터 재배치
목록 - 상세 전환