본문으로 건너뛰기

AnimateShake

세트에서 유일하게 아니라고 말하는 효과입니다. 틀린 비밀번호, 보내지지 않은 양식, 놓은 자리에 놓일 수 없던 행. 여기 있는 다른 애니메이션이 전부 도착하는 내용이라면 이것은 대답입니다.

tsx
import { AnimateShake } from 'neba';

<AnimateShake key={attempts} play={failed}>
  <TextField label="Passphrase" error={message} />
</AnimateShake>;

Props

Prop타입기본값설명
stagger공통number0한 자식 뒤 다음 자식이 시작하기까지의 간격(ms). 0이면 상자 자체가 재생되고, 그보다 크면 효과가 자식 하나하나에게 넘어갑니다
durationStep공통number0자식마다 재생 시간에 더해지는 값(ms). 음수면 뒤로 갈수록 빨라지며, 0 아래로는 내려가지 않습니다
reverse공통booleanfalse마지막 자식부터 실행합니다. 순서만 뒤집히고 각 자식은 그대로 재생됩니다
duration공통number420한 번 재생되는 시간(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있는 자리에 붙들어 둡니다
distancenumber | string6가장 크게 흔들릴 때의 이동 거리. 숫자는 px입니다
renderuseRender.RenderPropdiv 대신 다른 요소로 렌더링합니다 (render={<label />}). Base UI의 render prop 그대로
childrenReactNode흔들릴 것

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

여기 있는 다른 효과와 달리 기본값이 trigger="manual"입니다. mount에서 실행되는 흔들림은 장식이고, 움직이는 장식은 독자가 무시하는 법을 배우는 것입니다. 실패한 것에 play를 묶으세요. 거절될 때마다 새 key를 주는 것이 되감기라서, 두 번째 오답도 첫 번째만큼 움직입니다.

mode는 없습니다. 요소가 앉아 있는 자리에서 시작해 그 자리에서 끝나므로 도중에 끊겨도 어긋난 채 남지 않고, repeat는 절대 주지 마세요.

예시

distance

가장 크게 흔들릴 때의 이동 거리입니다. CSS 길이나 픽셀 숫자를 받습니다. 기본값은 6입니다. 고개를 젓는 정도이지 물건을 흔드는 정도가 아닙니다.

이 효과가 예외인 이유

컨트롤을 transform하지 않는다는 것이 이 라이브러리의 규칙입니다. 이 규칙은 hover, press, on, off 같은 컨트롤의 정지 상태에 적용되며, 그런 상태는 색으로 나타내는 편이 더 분명합니다. 흔들림은 상태가 아닙니다. 독자가 방금 한 조작에 대한 일회성 응답이고 400ms 만에 끝나며, 실패했다는 것을 이만큼 분명하게 전달하는 색은 없습니다.

접근성

  • 모션 감소 설정에서는 애니메이션이 꺼지므로, 흔들림이 메시지를 나르는 유일한 수단이어서는 안 됩니다. 말로도 적으세요. 필드의 error가 스크린 리더가 읽는 것입니다.
  • 실패한 컨트롤로 focus도 옮기세요. 그것을 보고 있지 않은 독자에게 움직임은 아무것도 전하지 못합니다.

Released under the MIT License