Компоненты/Слот-машина букв

Слот-машина букв

29 сентября 2026

Каждая буква заголовка прокручивается, как барабан, через столбик своих копий, а волна задержки расходится от центра к краям при появлении на экране.

Установка

npm install clsx motion tailwind-merge
pnpm add clsx motion tailwind-merge
yarn add clsx motion tailwind-merge
bun add clsx motion tailwind-merge

Файлы

rolling-letters.tsx
НазадТитры в перспективеДалее3D-барабан текста

Заголовок, который собирается, как игровой автомат: при появлении на экране каждая буква прокручивается вверх через столбик собственных копий и замирает на месте. Центральные буквы стартуют первыми, а волна задержки расходится к краям.

Анимация запускается каждый раз, когда строка попадает в область видимости. Задержку волны и длительность прокрутки можно настроить пропсами.

Вручную

Скопируйте эти файлы в components/rolling-letters/:

Общие помощники положите в lib/ проекта:

Проверьте алиас путей. Импорты в коде выше записаны как @/components/... и @/lib/.... Нужен алиас "@/*" на папку, где лежат components/ и lib/, в tsconfig.json — или поправьте импорты под свои пути.

Использование

import { RollingText } from "@/components/rolling-letters/rolling-letters";

export function Title() {
return <RollingText text="КОМПОНЕНТЫ" speed={0.05} duration={4} className="text-7xl font-bold" />;
}

Пропсы

Пропс
Описание
text?

Текст строки

Тип string·По умолчанию "ROLLING"

speed?

Задержка волны между соседними буквами в секундах

Тип number·По умолчанию 0.1

duration?

Длительность прокрутки в секундах

Тип number·По умолчанию 4

className?

Классы строки

Тип string·По умолчанию "text-5xl sm:text-7xl lg:text-8xl font-bold"

style?

Инлайн-стили строки

Тип CSSProperties