스크롤 컨테이너의 `scrollTop`을 매 프레임(또는 `scroll` 이벤트마다) 읽어서 0~threshold(보통 40~56px) 구간에 매핑한 진행률 `p`를 만든다. 그 `p`로 큰 제목의 `font-size`·`opacity`를 줄이고, 작은 제목(내비게이션 바 안의 타이틀)의 `opacity`를 반대로 키운다.
핵심은 두 타이틀을 **같은 텍스트, 다른 두 요소**로 따로 두는 것이다 — 큰 제목은 콘텐츠와 함께 스크롤되는 레이아웃 안에 있고, 작은 제목은 상단에 고정된 내비게이션 바 안에 있다. `font-size`를 직접 스크롤에 맞춰 보간하는 대신 두 요소를 크로스페이드하면 폰트 크기 변화로 인한 레이아웃 리플로우 비용을 피할 수 있다.
iOS의 `UINavigationBar` `prefersLargeTitles`가 정본 구현이고, Android는 `CollapsingToolbarLayout`(Material) 이 같은 역할을 한다. 두 플랫폼 모두 "탐색 중에도 지금 어느 화면인지"를 큰 글자로 먼저 보여주고, 다음 화면으로 이동할 목적(스크롤)이 시작되면 공간을 내주는 우선순위가 같다.
언제 쓰나
메일함, 설정처럼 최상위 탭 화면의 첫 진입 지점에 씁니다. 깊이 들어간 상세 화면에는 처음부터 작은 타이틀만 쓰는 것이 일반적입니다.