Animations/Split Text

Split Text

Caracteres disperses qui s'assemblent a leur position correcte. Entree dynamique.

scrollJStextrevealscatter
Trigger: Scroll (IntersectionObserver)
CSS requis: Non
Difficulte: medium

Preview live

Code

"use client";
// Caracteres disperses qui s'assemblent

const randomPos = chars.map(() => ({
  x: (Math.random() - 0.5) * 400,
  y: (Math.random() - 0.5) * 200,
  rotate: (Math.random() - 0.5) * 120,
}));

{chars.map((char, i) => (
  <span style={{
    display: "inline-block",
    transform: assembled
      ? "translate(0, 0) rotate(0deg)"
      : `translate(${randomPos[i].x}px, ${randomPos[i].y}px) rotate(${randomPos[i].rotate}deg)`,
    opacity: assembled ? 1 : 0,
    transition: `all 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) ${i * 50}ms`,
  }}>
    {char}
  </span>
))}

Instructions

Les caracteres commencent disperses aleatoirement puis s'assemblent. Le cubic-bezier avec overshoot (1.56) cree un effet elastique. Le stagger (50ms) fait apparaitre les chars un par un. Declenchez avec un state toggle.