Animated Video Scroll — це техніка створення кінематографічних односторінкових сайтів, де прокрутка сторінки безпосередньо керує відтворенням відеоматеріалу. Коли користувач гортає сторінку колесом миші або свайпом по екрану смартфона, відео плавно змінюється кадр за кадром, синхронізуючись із темпом читання та появою інформаційних блоків.
Цей ефект став візитівкою презентацій преміальних продуктів Apple, Tesla, Porsche та провідних дизайн-студій світу.
Ця техніка не є вбудовуванням звичайного відеоплеєра і не використовує анімовані GIF. В її основі лежить покадрова послідовність легких WebP-зображень, які апаратно відмальовуються на елементі <canvas> через WebGL або 2D Context, гарантуючи миттєвий відгук на кожен піксель скролу.
1. Що таке скрол-сайт із відео та його переваги
Традиційне відео у фоні сторінки має два суттєвих недоліки: воно живе власним життям, ігноруючи увагу читача, і створює високе навантаження на мережу й акумулятор мобільного пристрою.
Скрол-керований сайт вирішує цю проблему:
- Повний контроль уваги: Користувач сам обирає темп перегляду. Якщо він зупиняється на важливому абзаці, об'єкт у кадрі завмирає у потрібному ракурсі.
- Відсутність затримок і буферизації: Відеофайл заздалегідь розбивається на оптимізовані статичні кадри WebP, тому браузеру не потрібно виконувати важке декодування контейнерів MP4 під час швидкого скролу.
- Синхронізація наративу: Текстові тези, графічні мітки, числові метрики та технічні специфікації з'являються саме тоді, коли камера демонструє відповідну деталь об'єкта.
Відповідність типу проєкту
| Тип продукту | Чому підходить скрол-відео | Ключовий фокус у кадрі |
|---|---|---|
| Автомобілі та техніка | Підкреслює аеродинаміку, деталі шасі, матеріали салону | Плавний рух камери вздовж кузова, зміна ракурсів |
| Преміальна електроніка | Демонструє прецизійну збірку, товщину корпусу, оптику | Розбирання на компоненти (exploded view), макрозйомка |
| Архітектура та нерухомість | Створює просторове відчуття об'єму та освітлення | Проліт крізь фасад у внутрішній інтер'єр |
| Fashion та ювелірні вироби | Показує текстуру тканини, гру світла на металі | Делікатний рух світла навколо виробу |
2. Архітектура та структура файлів навички
Навичка побудована як модульний інженерний конвеєр. Кожен компонент відповідає за свій ізольований етап роботи:
1. SKILL.md — головна інструкція та сценарний алгоритм
Описує життєвий цикл створення сторінки: від технічного аналізу вихідного матеріалу за допомогою ffprobe до структуризації на смислові глави, розрахунку тривалості скролу та збірки готового HTML/JS додатку.
2. visual-system.md — довідник системи Precision Editorial
Встановлює суворі естетичні правила: відмова від дешевих штампів (безпідставних неонових світінь, скляних плашок і шрифту Playfair), готова палітра «Trackline» для технічних сюжетів, 5 базових схем розміщення тексту та типографічні пари.
3. extract_frames.py — скрипт екстракції та стиснення кадрів
Консольна утиліта на Python. Автоматично зчитує метадані відео через ffprobe, розраховує пропорційну кількість кадрів, нарізає окремі потоки під Desktop і Mobile у форматі WebP та генерує manifest.json.
4. evals.json — сценарії верифікації якості
Містить тестовий еталонний кейс (на прикладі ролика Porsche), що перевіряє плавність LERP, поведінку canvas при зміні розміру вікна, доступність для клавіатури та вагу асетів.
3. Механіка відтворення: Canvas, LERP та Dwell-Remap
В основі роботи лежить елемент <canvas>, закріплений на весь екран (position: fixed). Прокрутка сторінки перераховується у відносний прогрес від 0.0 до 1.0, який визначає, який саме номер кадру має відображатися.
1. Згладжування через LERP (Linear Interpolation)
Якщо перемикати кадри суворо за кожним івентом скролу, анімація вийде рваною, особливо на мишах із дискретним колесом прокрутки.
Для кінематографічної плавності застосовується лінійна інтерполяція: кадр, що відмальовується на екрані (currentFrame), плавно «наздоганяє» цільовий кадр (targetFrame).
2. Сповільнення біля кожної глави (Dwell-Remap)
Щоб користувач устигав прочитати заголовок і текст без необхідності філігранно зупиняти колесо миші, застосовується техніка Dwell-Remap. Біля центру кожної глави швидкість прокрутки кадрів штучно сповільнюється, залишаючи плавний рух у проміжках між ними.
3. Прогресивне завантаження кадрів
Щоб уникнути білих спалахів і не чекати завантаження всього пакета (100–150 кадрів), застосовується двоетапна стратегія:
- Критичний пріоритет: Миттєво завантажуються перші 5 кадрів та опорні кадри ключових глав.
- Фонова черга: Решта кадрів підтягуються невеликими партіями через
requestIdleCallbackабо чергу промісів. Якщо потрібний кадр ще в дорозі, canvas відображає найближчий уже завантажений.
4. Покроковий процес розробки: від відео до коду
Весь виробничий процес розбитий на сім послідовних кроків:
Крок 1. Аналіз ролика за допомогою ffprobe
Перед генерацією коду аналізуються технічні параметри вихідного файлу:
Створюється контактний лист із 6 опорних кадрів, щоб оцінити рух камери, положення об'єкта та наявність вільного місця (negative space) під текст.
Крок 2. Формулювання дизайн-концепції
Формулюється чітка теза:
- Головний герой: Хто або що в центрі уваги.
- Цільова емоція: Технічна точність, спокійна розкіш, драйв, медитативність.
- Шрифтова пара: Контрастний заголовок та інженерний моноширинний акцент.
- Фірмовий прийом: Телеметрія, змінний трекінг, лічильник мікрокадрів.
Крок 3. Нарізка та оптимізація кадрів
Кількість кадрів та висота прокрутки підбираються відповідно до хронометражу відео:
| Тривалість відео | Кількість кадрів | Рекомендована висота скролу | Сумарна цільова вага (WebP) |
|---|---|---|---|
| 0–5 секунд | 60–80 кадрів | 450–550vh | 4–7 МБ |
| 5–15 секунд | 90–130 кадрів | 600–750vh | 8–12 МБ |
| 15–30 секунд | 130–180 кадрів | 750–900vh | 10–15 МБ |
| 30+ секунд | 180–200 кадрів | 900–1000vh | 12–16 МБ |
Запуск екстракції через Python-скрипт:
Крок 4. Сценарій за главами
Сторінка ділиться на 4–6 змістовних розділів. Наприклад:
- Глава 1: Вступ (0–15%) — Назва моделі, мінімалістичний силует.
- Глава 2: Аеродинаміка (20–40%) — Фокус на геометрії антикрила та повітропроводів.
- Глава 3: Силова установка (45–65%) — Показ двигуна або шасі з телеметричними даними.
- Глава 4: Фінал і дія (75–100%) — Повне розкриття автомобіля та кнопка тест-драйву.
Крок 5. Композиція шарів та верстка навколо відео
Текст ніколи не повинен перекривати ключові деталі в кадрі. Залежно від траєкторії руху об'єкта, положення текстових блоків плавно змінюється від лівого краю до правого або фіксується у нижній третині екрана.
Крок 6. Збірка на основі стартового шаблону
Використовується надійний HTML5-каркас із готовою логікою підвантаження та підтримкою адаптивності, до якого підключаються індивідуальні токени кольорів та маніфест кадрів.
Крок 7. Перевірка та критика
Завжди тестуйте скрол-сайти через локальний HTTP-сервер (python3 -m http.server), а не відкриваючи файл напряму через file:///. Браузерні політики CORS блокують завантаження WebP-кадрів через fetch() при локальному відкритті файлів.
5. Візуальна система: типографіка та палітра Trackline
Система Precision Editorial вимагає відмови від декоративних надмірностей на користь вивіреної швейцарської верстки та естетики приладів контролю.
Типографічні комбінації
- Заголовки: Archivo (Black, Tight tracking
-0.03em) - Основний текст: Archivo (Regular, 15px)
- Технічні підписи та телеметрія: IBM Plex Mono (Medium, 11px, Uppercase)
- Найкраще для: Автомобілі, авіація, важка інженерія, годинникові механізми.
Колірна палітра «Trackline»
Палітра будується на кольорах справжнього треку: матовий карбон, холодний алюміній та стримані гоночні акценти.
Сигнальні кольори (--color-signal та --color-heritage) використовуються точково — для позначення активної глави або індикатора положення, займаючи не більше 3% площі екрана.
6. Композиція шарів, рух та фірмові прийоми
Сторінка конструюється з трьох незалежних за візуальною глибиною шарів:
5 варіантів компонування тексту
| Схема компонування | Розташування контенту | Оптимальний сценарій використання |
|---|---|---|
| Masthead Statement | Гігантський заголовок на весь екран по центру | Відкриваючий перший екран (вступ до ролика) |
| Side Margin Annotation | Вузька колонка (3–4 cols) праворуч або ліворуч | Об'єкт рухається у протилежній частині кадру |
| Split Statement | Заголовок ліворуч, технічний опис праворуч | Об'єкт стабільно зафіксований суворо по центру |
| Telemetry Dock | Горизонтальна плашка внизу з приладовими даними | Демонстрація динаміки, швидкості, потужності |
| Final Callout | Сфокусований блок із єдиною головною дією (CTA) | Завершальний екран після завершення відеоряду |
Принципи анімації DOM-елементів
Оскільки саме відео на canvas уже створює інтенсивний рух, анімація текстових блоків має бути стриманою:
- Поява через маску: Текст піднімається знизу через контейнер з
overflow: hidden. - Зсув: Не більше 16–24px по осі Y.
- Таймінги: 600–800ms на вхід глави з кривою
cubic-bezier(0.16, 1, 0.3, 1). - Жодних розмить: Фільтр
filter: blur()суворо заборонений — він викликає перерахунок шарів браузера та руйнує стабільні 60 FPS.
7. Антипатерни: відмова від застарілих «люксових» штампів
Більшість шаблонних відеолендінгів виглядають дешево через набір типових дизайнерських кліше. Ось від чого слід повністю відмовитися:
| Застарілий штамп | Чому це погано | Професійна альтернатива |
|---|---|---|
| Playfair Display + тонкий гротеск | Стандартний шаблон «псевдолюксу» | Прецизійні гротески: Archivo, Roboto Flex, Manrope |
| Glassmorphism (матове скло) | Розмиває фонове відео, перевантажує GPU | Контрастний чистий текст у вільному просторі кадру |
| Плаваючі частинки та пил | Відволікають увагу від реального об'єкта | Чистий canvas без штучного декоративного сміття |
| Фіолетово-сині неонові градієнти | Асоціюються з шаблонними криптолендінгами | Натуральні кольори, узяті безпосередньо з кадрів відео |
| Кастомний курсор із затримкою | Створює відчуття лагу та незручний у роботі | Нативний системний курсор зі зрозумілими ховерами |
8. Продуктивність, доступність (A11y) та мобільна оптимізація
Скрол-сайти з великою кількістю графіки потребують ретельної технічної дисципліни:
1. Обмеження Device Pixel Ratio (DPR)
Сучасні смартфони мають екрани з DPR 3.0 або 3.5. Якщо рендерити canvas у такій роздільній здатності, площа обчислень зростає майже в 10 разів, що миттєво перегріває процесор.
2. Пауза рендерингу для прихованих вкладок
Коли користувач перемикається на іншу вкладку, рендеринг має миттєво зупинятися:
3. Режим зменшеної анімації (prefers-reduced-motion)
Для людей із чутливим вестибулярним апаратом постійна покадрова прокрутка може викликати запаморочення.
Якщо в операційній системі увімкнено параметр prefers-reduced-motion: reduce, замість нескінченної прокрутки кадрів сайт має відобразити один якісний статичний постер або спрощену слайд-галерею.
9. Практичний воркшоп: створення та запуск проєкту
Створимо мінімальну робочу структуру скрол-сайту.
Крок 1. Генерація кадрів із відео
Помістіть відео в робочу теку та запустіть нарізку:
Скрипт створить файл маніфесту frames/manifest.json:
Крок 2. Структура файлів готового проєкту
Крок 3. Запуск локального середовища
Для коректного підвантаження ресурсів запустіть локальний HTTP-сервер:
Відкрийте у браузері адресу http://localhost:3000 і перевірте плавність ходу кадрів та коректність перемикання глав.
10. Підсумковий чек-лист готовності скрол-сайту
Перед релізом проєкту перевірте відповідність усім інженерним та візуальним критеріям:
Технічні метрики
- Сумарна вага кадрів десктопної версії не перевищує 12 МБ (мобільна — до 5 МБ).
- Перші 5 кадрів мають пріоритетне передзавантаження (
preload). - Коефіцієнт DPR обмежений значенням
2для запобігання перегріву мобільних пристроїв. - Цикл
requestAnimationFrameзупиняється при переході на іншу вкладку браузера.
Досвід користувача та доступність
- Реалізовано плавний LERP-перехід між кадрами без різких ривків.
- Налаштовано Dwell-Remap для комфортного читання тексту біля кожної глави.
- Підтримується режим
prefers-reduced-motionзі статичним постером. - Мінімальний розмір усіх клікабельних елементів становить щонайменше 44×44px.
Дизайн та естетика
- Використано чітку інженерну шрифтову пару без псевдолюксових кліше.
- Текст не перекриває головний рухомий об'єкт у кадрі.
- Кольори інтерфейсу безпосередньо запозичені з матеріалу ролика.
- Сторінка завершується зрозумілим, однозначним закликом до дії (CTA).