View Transition API를 활용한 부드러운 전환

Smooth transitions with the View Transition API  |  View Transitions  |  Chrome for Developers

작성자
Ruby Weekly
발행일
2024년 04월 14일

핵심 요약

  • 1 View Transition API는 웹사이트의 다양한 뷰 간에 시각적으로 매끄러운 전환을 구현하여 사용자 경험을 향상시킵니다.
  • 2 이 API는 SPA(단일 페이지 애플리케이션)와 MPA(다중 페이지 애플리케이션) 모두에서 브라우저 스냅샷, DOM 업데이트, CSS 애니메이션을 기반으로 작동합니다.
  • 3 동일 문서 전환은 `document.startViewTransition`으로, 교차 문서 전환은 양쪽 페이지의 `@view-transition { navigation: auto; }` CSS 옵트인을 통해 트리거됩니다.

도입

View Transition API는 웹사이트 내에서 다양한 뷰 간에 시각적으로 매끄럽고 부드러운 전환 효과를 구현할 수 있도록 지원하는 강력한 웹 플랫폼 기능입니다. 이 API는 사용자가 웹사이트를 탐색할 때 더욱 몰입감 있고 매력적인 경험을 제공하여, 페이지 이동이나 콘텐츠 변화 시 발생하는 시각적 끊김을 최소화합니다. 단일 페이지 애플리케이션(SPA)이든 다중 페이지 애플리케이션(MPA)이든 관계없이 모든 웹 아키텍처에서 일관된 전환 효과를 제공하여 개발자가 사용자 인터페이스의 동적 요소를 손쉽게 제어할 수 있게 합니다.

View Transition API는 웹사이트의 사용자 경험을 혁신적으로 개선할 수 있는 다양한 시나리오에 적용됩니다.

View Transition API의 작동 원리

View Transition API는 다음 세 가지 핵심 원칙에 기반하여 전환을 구현합니다.

  • 스냅샷 생성: 브라우저는 전환 전(이전 상태)과 전환 후(새로운 상태)의 DOM 스냅샷을 촬영합니다.

  • DOM 업데이트: 렌더링을 일시적으로 억제한 상태에서 DOM이 업데이트됩니다.

  • CSS 애니메이션: 촬영된 스냅샷들을 사용하여 CSS 애니메이션을 통해 전환 효과가 구동됩니다.

주요 활용 사례

일반적인 View Transition 활용 사례는 다음과 같습니다.

  • 제품 목록 페이지의 썸네일 이미지가 상세 페이지에서 전체 크기 이미지로 부드럽게 전환.

  • 페이지 탐색 중에도 고정된 내비게이션 바가 제자리에 유지.

  • 필터링 시 아이템들이 그리드 내에서 위치를 변경하며 이동.

View Transition의 두 가지 유형

View Transition은 애플리케이션 아키텍처에 따라 두 가지 방식으로 트리거될 수 있습니다.

1. 동일 문서 View Transition (Same-document view transitions)

  • 개요: 단일 문서 내에서 발생하는 전환으로, 주로 SPA(Single-Page Application)에서 사용됩니다. Chrome 111부터 지원됩니다.

  • 트리거 방식: JavaScript의 document.startViewTransition() 메서드를 호출하여 시작합니다. javascript function handleClick(e) { if (!document.startViewTransition) { updateTheDOMSomehow(); return; } document.startViewTransition(() => updateTheDOMSomehow()); }

  • 예시: 카드가 추가되거나 제거될 때 카드를 애니메이션화하는 SPA 예시.

2. 교차 문서 View Transition (Cross-document view transitions)

  • 개요: 두 개의 다른 문서(페이지) 사이에서 발생하는 전환으로, 주로 MPA(Multi-Page Application)에서 사용됩니다. Chrome 126부터 지원됩니다.

  • 트리거 방식: 동일 출처(same-origin) 내에서 두 페이지 모두 옵트인(opt-in)했을 경우, 사용자 클릭과 같은 교차 문서 내비게이션에 의해 자동으로 트리거됩니다. 별도의 API 호출이 필요 없습니다.

  • 옵트인 방식: 다음 CSS 스니펫을 사용하여 전환을 활성화합니다. css @view-transition { navigation: auto; }

  • 예시: 스택 내비게이터 데모와 같이 페이지가 스택에 푸시되거나 팝되는 MPA 예시.

결론

View Transition API는 웹 개발자들이 사용자에게 더욱 풍부하고 동적인 경험을 제공할 수 있도록 돕는 핵심적인 도구입니다. SPA와 MPA 환경 모두에서 일관된 방식으로 매끄러운 시각적 전환을 구현할 수 있으며, 이는 브라우저의 스냅샷 기능과 CSS 애니메이션의 유연성을 결합하여 달성됩니다. `document.startViewTransition`을 통한 명시적 제어 또는 CSS `navigation: auto` 옵트인을 통한 자동 트리거 방식을 통해 개발자는 각 애플리케이션의 특성에 맞춰 최적의 전환 전략을 선택할 수 있습니다. 이 API의 활용은 웹사이트의 전반적인 사용자 인터페이스 품질을 크게 향상시킬 것입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!