[ Новая коллекция ]
Настройки
Вставьте код в чат ИИ-агента и напишите: «Сделай мне такой эффект на сайте». Инструкция для агента уже внутри.
Анимация при прокрутке на чистом JavaScript. Блок закрепляется на экране, лента карточек едет вбок, а карточки у краёв разворачиваются в 3D веером, к центру экрана. Настройте на живом примере и скопируйте код.
[ Новая коллекция ]
Вставьте код в чат ИИ-агента и напишите: «Сделай мне такой эффект на сайте». Инструкция для агента уже внутри.
Блок с карточками «прилипает» к экрану. Дальше, пока вы листаете страницу вниз, лента карточек едет справа налево. Каждая карточка поворачивается в зависимости от того, где она сейчас на экране. В центре она смотрит прямо на зрителя. Ближе к краям внешняя сторона карточки поворачивается к зрителю, а внутренняя уходит вглубь и прячется за соседнюю. Карточки расходятся веером, будто стоят на вогнутом экране, обращённом к вам. Если листать обратно, лента едет назад.
Карточки вращаются через CSS 3D: perspective на сцене и rotateY с translateZ на каждой карточке. Положение каждой карточки в ленте измеряется один раз, поэтому на каждом кадре скрипт ничего не пересчитывает в раскладке страницы.
Через ИИ-агента — самый простой путь. Эти эффекты сделаны в первую очередь для тех, кто собирает сайт вместе с ИИ-агентом: Claude Code, Cursor или любым другим. Настройте эффект на примере выше, нажмите «Скопировать код» и вставьте его в чат агента с одной фразой: «Сделай мне такой эффект на сайте». В скопированном коде уже есть описание эффекта и инструкция для агента. Он сам перенесёт стили, разметку и скрипт, впишет их в вашу вёрстку и подставит ваши карточки. Ваши настройки сохранятся.
Если что-то нужно иначе, скажите агенту об этом теми же словами, что и человеку: «сделай карточки крупнее», «пусть лента начинается с первой карточки», «поставь после блока с ценами».
Вручную. Кнопки кода — в настройках, под шестерёнкой в правом верхнем углу сцены. «Скачать код» даёт готовую HTML-страницу с вашими настройками. «Скопировать код» копирует только стили, разметку и скрипт для вставки на сайт. Скрипт без зависимостей, работает на нативной прокрутке и не перехватывает колесо мыши.
Разметка — контейнер, «липкая» сцена и лента карточек. Карточек может быть сколько угодно:
<div class="carousel">
<div class="carousel__stage" data-carousel-stage>
<ul class="carousel__row" data-carousel-row>
<li class="carousel__card" data-carousel-card>…</li>
<!-- ещё карточки -->
</ul>
</div>
</div>
Сцене нужны position: sticky и высота экрана, карточкам — пропорции через aspect-ratio. Ширину карточек и высоту контейнера, то есть длину прокрутки, скрипт задаёт сам:
.carousel__stage { position: sticky; top: 0; height: 100svh; overflow: hidden; }
.carousel__card { aspect-ratio: 3 / 4; }
createScrollCarousel(document.querySelector('.carousel'), { angle: 32, length: 400 });
Если на сайте закреплённая шапка, задайте сцене top, равный её высоте, и уменьшите высоту сцены на столько же. Скрипт читает top сам и считает прогресс от него.
Для индикатора скрипт выставляет на контейнере CSS-переменную --carousel-progress от 0 до 1. Её можно использовать в своих стилях без единой строки JavaScript.
Двигаются только transform, поэтому браузер не пересчитывает раскладку страницы на каждом кадре. Карточки остаются обычным списком ссылок, и скринридер читает их по порядку. Если в системе включено «Уменьшить движение», сцена не закрепляется и ничего не поворачивается: ленту можно просто пролистать вбок.
Сколько карточек можно поставить? Сколько угодно. Если карточек много, увеличьте длину прокрутки, чтобы лента не неслась слишком быстро.
Работает ли на телефонах? Да, это обычная прокрутка страницы. На узкой сцене карточки шире, и в кадре одновременно видно одну-две.
Нужны ли GSAP или другие библиотеки? Нет, всё делает одна функция примерно на 120 строк.