Skip to content

useBounceIn

@hua-labs/hua/motion

bash
npm install @hua-labs/hua
tsx
import { useBounceIn } from "@hua-labs/hua/framework";

tsx
const bounceIn = useBounceIn({ duration: 600 });

return (
  <div ref={bounceIn.ref} style={bounceIn.style}>
    Content bounces in
  </div>
);

0.2
Light
intensity: 0.2
0.3
Normal
intensity: 0.3
0.5
Strong
intensity: 0.5

durationnumber600Animation duration in milliseconds
delaynumber0Delay before animation starts
intensitynumber0.3Bounce intensity (scale overshoot amount)
thresholdnumber0.1Viewport intersection threshold (0-1)
triggerOncebooleantrueOnly trigger once
easingstring"cubic-bezier(0.34, 1.56, 0.64, 1)"Easing function (default: bounce curve)
autoStartbooleantrueAuto start on viewport entry
onComplete() => void-Callback when animation completes
onStart() => void-Callback when animation starts
onStop() => void-Callback when animation is stopped
onReset() => void-Callback when animation is reset

refRefObject<T | null>Ref to attach to element
styleCSSPropertiesAnimated style (transform + opacity)
isVisiblebooleanWhether element is in viewport
isAnimatingbooleanWhether animation is in progress
progressnumberAnimation progress (0-1)
start() => voidStart animation
stop() => voidStop animation
reset() => voidReset to initial state

tsx
const bounceIn = useBounceIn({
  intensity: 0.5,  // More pronounced bounce overshoot
  duration: 800,
});