본문으로 건너뛰기

AnimateScramble

노이즈를 뚫고 글자가 하나씩 자리를 잡습니다. AnimateTyping의 형제입니다. 타자기는 빈 줄에서 문자열을 드러내고, 이것은 이미 제 길이인 줄에서 문자열을 해석해 냅니다.

tsx
import { AnimateScramble } from 'neba';

<AnimateScramble text="RESOLVING SIGNAL" />;

Props

Prop타입기본값설명
textstring정착할 문자열. children보다 우선합니다
speednumber18초당 정착하는 글자 수. duration을 주면 그쪽이 이깁니다
ticknumber45아직 정착하지 않은 글자를 다시 그리는 주기(ms). 30 아래로 가면 글자로 읽히지 않습니다
charactersstring노이즈를 뽑아 올 글자 풀. 높이가 들쭉날쭉한 글자를 섞으면 줄이 튑니다
localestring글자 경계를 찾을 언어
duration공통number한 번 재생되는 시간(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={<h2 />}). Base UI의 render prop 그대로
childrenReactNode정착할 텍스트

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

상자 크기가 한 번도 변하지 않습니다. AnimateTyping 대신 이 컴포넌트를 고르는 이유가 여기에 있습니다. 주변이 재배치되지 않고, 제목이 내려앉으면서 페이지를 밀어내지 않습니다.

공백은 절대 섞이지 않습니다. 공백이 글자로 깜빡였다 돌아오면 단어가 움직인 것처럼 읽히는데, 이 효과는 바로 그것을 피하려고 있는 것입니다.

예시

speed, duration, tick

speed는 초당 몇 글자가 정착하는지입니다. duration은 전체 실행 시간이고 주어지면 그쪽이 이깁니다. 글자당 지연이 거기서 나오므로 같은 것을 두 번 물어보지 않습니다. tick은 아직 정착하지 않은 글자를 다시 그리는 주기인데, 30ms 아래로 내려가면 글자로 읽히지 않습니다.

characters

정착하지 않은 글자를 뽑아 올 풀입니다. 높이를 하나로 맞추세요. 크고 작은 글자가 섞인 풀은 정착하는 동안 줄을 튀게 만듭니다.

접근성

  • 완성된 문자열은 첫 프레임부터 스크린 리더를 위해 잘린 상자 안에 있고, 노이즈는 aria-hidden인 사본입니다.
  • 모션 감소 설정에서는 곧바로 텍스트를 보여 줍니다.
  • 독자가 빨리 반응해야 하는 것에는 쓰지 마세요. 끝나야만 읽힙니다.

Released under the MIT License