14 спиннеров из одной сетки 3×3

15.01.2026 · 3 мин

Смотришь на анимированные индикаторы загрузки и видишь сложность: спирали, волны, импульсы. На деле — девять квадратиков и правильные задержки между ними.

Демо 14 паттернов спиннеров

Структура: сетка с индексами

Сетка 3×3. Каждая клетка мигает. Вся магия — в моменте старта. Сдвинешь анимацию на 0.1 секунды — получишь волну. Переставишь порядок — спираль.

  [0, 1, 2]
  [3, 4, 5]
  [6, 7, 8]

Один компонент, один переход, четырнадцать эффектов.

Паттерны анимации: волна, пульс, спираль

Волна слева направо — колонки стартуют по очереди:

[0, 0.1, 0.2, 0, 0.1, 0.2, 0, 0.1, 0.2]

Пульсация из центра — центр первый (индекс 4), края последними:

[0.2, 0.1, 0.2, 0.1, 0, 0.1, 0.2, 0.1, 0.2]

Спираль по часовой — обход 0→1→2→5→8→7→6→3→4:

[0, 0.1, 0.2, 0.7, 0.8, 0.3, 0.6, 0.5, 0.4]

Логика одна. Массивы задержек — разные.

Код спиннера на Framer Motion

<motion.div
  animate={{
    backgroundColor: [dimColor, color, dimColor],
  }}
  transition={{
    duration: 1.2,
    delay: delays[index],
    repeat: Infinity,
    ease: 'easeInOut',
  }}
/>

Framer Motion берёт на себя интерполяцию. Мы указываем только задержку для каждой клетки.

Почему мозг видит паттерн

Мозг ловит согласованное движение. Девять точек, мигающих одновременно — статика. Те же точки с разбросом 0.1 секунды — волна, за которой следишь глазом.

Не нужны keyframes для каждого кадра. Не нужен canvas. Девять чисел и универсальный компонент.

Что расширяет компонент

Логика массива задержек не меняется.