본문으로 건너뛰기

AnimateZoom

놓일 자리의 한가운데에서 다가오는 효과입니다. AnimateGrow와 같은 계산을 두 배 넘는 거리로, 언제나 중심을 기준으로 실행합니다. 화면에서 한 번은 시선을 끊어야 하는 그 하나를 위한 것입니다.

tsx
import { AnimateZoom } from 'neba';

<AnimateZoom>
  <Statistic label="이번 분기 가동률" value={99.98} unit="%" />
</AnimateZoom>;

Props

Prop타입기본값설명
fromnumber0.4최종 크기에 대한 시작 배율. 1보다 크면 앞에서 다가와 제자리에 놓입니다
fadebooleantrue확대되면서 함께 페이드인합니다
stagger공통number0한 자식 뒤 다음 자식이 시작하기까지의 간격(ms). 0이면 상자 자체가 재생되고, 그보다 크면 효과가 자식 하나하나에게 넘어갑니다
durationStep공통number0자식마다 재생 시간에 더해지는 값(ms). 음수면 뒤로 갈수록 빨라지며, 0 아래로는 내려가지 않습니다
reverse공통booleanfalse마지막 자식부터 실행합니다. 순서만 뒤집히고 각 자식은 그대로 재생됩니다
mode공통'in' | 'out''in'들어오는지 나가는지. out은 같은 애니메이션을 거꾸로 재생하고 그 자리에서 멈춥니다
duration공통number340한 번 재생되는 시간(ms)
delay공통number0시작 전 대기(ms)
easingstringCSS 이징 곡선. 기본값은 라이브러리의 곡선
repeat공통number | 'infinite'1반복 횟수
alternate공통booleanfalse한 번 걸러 거꾸로 재생합니다. 반복이 처음으로 튀지 않고 되돌아옵니다
trigger공통'mount' | 'visible' | 'hover' | 'manual''mount'무엇이 재생을 시작하는지. visible은 화면에 들어올 때, hover는 포인터가 올라올 때(포커스 포함), manual은 play가 정합니다
playbooleantrigger가 manual일 때 재생합니다. false → true 될 때마다 처음부터 다시 시작합니다
once공통booleantruetrigger가 visible일 때 처음 한 번만 재생할지. 끄면 화면에 들어올 때마다 다시 재생됩니다
threshold공통number0.2trigger가 visible일 때 화면에 얼마나 들어와야 하는지, 0에서 1 사이
paused공통booleanfalse있는 자리에 붙들어 둡니다
renderuseRender.RenderPropdiv 대신 다른 요소로 렌더링합니다 (render={<section />}). Base UI의 render prop 그대로
childrenReactNode다가오는 것

나머지 <div> 속성은 모두 루트로 전달됩니다. 모든 Animate*가 공유하는 설정은 Prop 규약에 있습니다.

origin은 없습니다. 모서리에 고정된 zoom은 grow이고, 그것은 AnimateGrow입니다.

예시

from

시작 배율입니다. 1보다 한참 작으면 아무것도 없던 자리에서 솟아오르고, 1보다 크면 커진 채로 등장해 제자리로 물러납니다. 후자는 페이지에서 솟는 것이 아니라 읽는 사람 쪽으로 다가오는 것처럼 읽힙니다.

trigger="visible"

zoom이 가장 흔히 쓰이는 자리는 독자가 다다르는 순간 놓이는 수치입니다. threshold는 요소가 화면에 얼마나 들어와야 하는지를 0에서 1 사이로 정하고, 기본으로 켜져 있는 once가 페이지를 되돌릴 때마다 다시 재생되는 것을 막습니다.

mode

out은 다시 멀어지며 끝에서 멈춥니다.

tsx
<AnimateZoom mode="out" duration={240}>
  <Card title="닫힘">이 카드는 나가는 중입니다.</Card>
</AnimateZoom>

stagger

stagger, durationStep, reverse는 상자 대신 자식 하나하나에게 효과를 차례로 넘깁니다. 동작은 AnimateFade와 같고, 그쪽 페이지에 자세히 적혀 있습니다.

접근성

  • 축소된 모션 설정에서는 애니메이션이 통째로 꺼지고 내용은 원래 크기로 그냥 거기 있습니다.
  • 넓은 면적에 걸친 강한 zoom은 이 묶음에서 모션에 민감한 독자를 가장 괴롭히기 쉬운 효과입니다. 화면의 상당 부분을 덮는 것에는 작은 from이나 fade를 쓰세요.

Released under the MIT License