agentleFS
vibemarketologruvibemarketologru/vibe-landing-kit/skills/motion/SKILL.md

motion

Skill0 starsChanged 47 days agoMITView on GitHub

Use when adding animation or interaction effects to a landing page or web page — entrance reveals, scroll effects (sticky «how it works» steps, product shot growing on scroll, progress line, paragraph lighting up word by word), counters and before/after bars, text accents (marker highlight, hand-drawn underline, rotating word in the headline), tabs and pricing toggles, form error and success states, marquee, hover tilt, magnetic buttons, sticky CTA — or when the user asks for «анимации», «вау-эффект», «чтобы оживить страницу», «микроанимации». Uses Vibe Landing Kit motion recipes (motion/*.json or MCP get_motion_recipe); GSAP and Lottie rules are in gsap-lottie.md.

38 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use defaults, viewports and 9 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • sanmidableSkill

    defaults

    Also in 3 projects that use this

  • sanmidableSkill

    viewports

    Also in 3 projects that use this

  • miovragSkill

    keyboard

    Load this skill for every project containing interactive UI elements — buttons, links, modals, dropdowns, sliders, tabs, carousels, or any custom widget. Under no circumstances create an interactive component that cannot be fully operated by keyboard alone. Absolutely always ensure visible focus indicators, logical tab order, and no keyboard traps. Apply these rules to every interactive element without exception.

    Also in 3 projects that use this

  • soilmassSkill

    color

    Color animations including hue shifts, saturation changes, brightness transitions, and contrast adjustments. Use when implementing color morphing, theme transitions, mood effects, or attention-grabbing color pulses. Provides tokens for all color property animations.

    Also in 4 projects that use this

  • owshq-mecSkill

    layout

    Improve layout, spacing, and visual rhythm. Fixes monotonous grids, inconsistent spacing, and weak visual hierarchy. Use when the user mentions layout feeling off, spacing issues, visual hierarchy, crowded UI, alignment problems, or wanting better composition.

    Also in 3 projects that use this

  • GoogleSkill

    critique

    Expertise in auditing and fixing repository scripts and GitHub Actions workflows to ensure technical robustness and security.

    Also in 4 projects that use this

The file

Files
SKILL.md

Анимации без вреда конверсии

Главные правила

  • Бери рецепт целиком: html + css + js из get_motion_recipe (или motion/<slug>.json). Код — ванильный, без CDN; GSAP только если он уже есть в проекте из npm (gsap_alt). Когда GSAP или Lottie действительно нужны и как их подключать под строгий CSP — gsap-lottie.md рядом.
  • Анимируются только transform, opacity, clip-path, filter. Никогда — ширина, высота, отступы, позиция: это сдвиги макета (CLS). Единственное исключение — stroke-dashoffset у тонкой SVG-линии в рецепте svg-line-draw.
  • Первый экран: заголовок и кнопка видны сразу, даже без JS. Эффект появления — только на том, что НЕ является самым крупным элементом первого экрана (иначе страдает LCP).
  • Обязателен @media (prefers-reduced-motion: reduce): по полю reduced_motion рецепта эффект убирается (remove), упрощается до плавного появления (soften) или остаётся (keep).
  • Бесконечные анимации (лента логотипов, фон, сменное слово) — с паузой по наведению/фокусу и кнопкой паузы (WCAG 2.2.2). Без вспышек чаще 3 раз в секунду.
  • Бюджет: не больше 3 одновременных анимаций на экране и один «вау-момент» на страницу. Лучше меньше, но точно.
  • Анимации, привязанные к прокрутке (animation-timeline), — только внутри @supports (animation-timeline: view()) и с запасным путём на IntersectionObserver/requestAnimationFrame: в Firefox их нет. Рецепты это уже делают.
  • html, body { overflow-x: hidden } замораживает CSS-шкалы прокрутки и выключает position: sticky — пиши overflow-x: clip.

1. Зачем здесь движение: проверка из 5 вопросов

Каждая анимация отвечает хотя бы на один вопрос. Не отвечает — не ставь: «пусто смотрелось» не причина.

ВопросЧто делает движение на лендингеРецепты
Иерархия — куда смотреть первым?ведёт взгляд к офферу, выгоде, кнопкеhero-text-reveal, marker-highlight, svg-line-draw, cta-attention
Причина → следствие — что случилось от моего действия?«нажал здесь — изменилось там»tabs-indicator, accordion-smooth, before-after-slider, form-field-feedback
Преемственность — откуда это и куда ушло?связывает шаги и экраны в одну историюscroll-story-steps, media-zoom-scroll, steps-progress-line, sticky-stack-cards
Смена состояния — что сейчас?отправлено, ошибка, выбрано, пройденоform-success, form-field-feedback, tabs-indicator, scroll-progress-bar
Характер бренда — какой он?дорогой, строгий, живойgradient-drift, parallax-soft, tilt-card, magnetic-button, marquee-logos

2. Характер движения

90 % анимаций страницы берут характер стиля. Одна фирменная кривая на 80 % анимаций и три длительности — tokens.motion дизайн-системы (fast / base / slow).

ХарактерДлительностьКриваяПерелётСтили каталога
Premium350–600mscubic-bezier(.4,0,.2,1)0 %dark-premium, apple, editorial, shopify
Corporate200–400mscubic-bezier(.2,0,0,1)0–3 %stripe, linear, swiss, bmw, cal, intercom, notion, wise, revolut, airbnb, soft
Playful150–300msback (cubic-bezier(.34,1.56,.64,1))10–20 %в каталоге нет; только если бренд сам такой (детское, еда, развлечения)
Energetic100–250msexpo (cubic-bezier(.16,1,.3,1))15–30 %ближе всего nike (без перелёта у текста)

Вход бери по ease_emphasized стиля; если его нет — cubic-bezier(.16,1,.3,1), уход — cubic-bezier(.3,0,1,1).

3. Длительность

ЭлементДлительность
наведениедо 100ms (уход 150–200ms)
нажатие120–180ms
карточка, вкладка, панель200–350ms
модальное окно300–400ms
крупное раскрытие (кадр, шторка, счёт)600–1200ms

Поправка на расстояние: путь 50px — ×0,8; 200px — ×1,3; 400px — ×1,6; весь экран — ×1,8–2,0. Уход = 65–75 % от появления. На телефоне — ×0,8 (см. раздел 7).

4. Кривая по направлению

ДвижениеКриваяПример из рецептов
появлениеease-out (торможение)cubic-bezier(.2,0,0,1), (.16,1,.3,1)
уходease-in (разгон)cubic-bezier(.4,0,1,1), (.3,0,1,1)
перемещение на месте (подложка, «рука»)ease-in-outcubic-bezier(.65,0,.35,1)
повтор, дыхание фонаsinecubic-bezier(.37,0,.63,1)
привязка к прокрутке, бегущая лентаlinearвсегда linear, в GSAP ease: 'none'

5. Очередь и хореография

ЧтоШаг очередиПотолок
мелкие элементы (пункты, иконки)20–40msвся очередь ≤ 500ms
карточки50–100msбольше 8 элементов — общая длительность 0,5–0,6 с
крупные блоки100–200ms
строки текста / слова / буквы60–100 / 40–70 / 20–40msраскрытие текста ≤ 0,8–1 с
  • Перехлёст: следующий шаг стартует на 60–75 % предыдущего. Исключение — текст на одном месте (смена панели, цены): перехлёст ≤ 20ms, иначе цена «двоится».
  • Порядок первого экрана: надзаголовок → строки заголовка → текст → кнопка → картинка.
  • Правило 1/3: одновременно движется не больше трети элементов экрана, и ни один не проходит больше трети экрана за отрезок.
  • Встречное движение фона — 20–30 % от основного. После связки — 100–200ms тишины.
  • Два числа не считаются одновременно (result-bars выстраивает строки в очередь ровно по длительности счёта).

6. Амплитуда

ЧтоСколько
сдвиг при появлении15–25px (premium), 20–30px (corporate); на телефоне меньше
подъём из маскиyPercent 110 (слово целиком уходит под маску)
фон≤ 10–20 % энергии основного движения
пульсация масштабабольше ±5 % — только с поводом
перелётуспех 5–10 %; ошибка 0; количества и цены 0
встряска ошибки±10–15px, 2–3 затухающих колебания за 300–400ms

7. Телефон

  • Длительности ×0,8, задержки очереди −30 %, одно-два анимируемых свойства вместо трёх.
  • Без параллакса и без встречного масштаба (в рецептах уже выключены до 767px).
  • Сцены с закреплением (scroll-story-steps, горизонтальные сцены) на телефоне заменяются стопкой, а не уменьшаются.
  • Проверка на 390px: нет горизонтальной прокрутки, текст ошибки и подписи помещаются в строку.

8. Уменьшение движения — это дизайн, а не выключатель

УровеньЧто происходитРецепты
убрать (remove)конечное состояние сразу, ничего не движетсяparallax-soft, marquee-logos, gradient-drift, tilt-card, sticky-stack-cards, media-zoom-scroll, svg-line-draw, marker-highlight, steps-progress-line, text-scroll-highlight, result-bars, hero-word-rotator
смягчить (soften)только проявление opacity ≤ 200ms, без сдвигов и очередейfade-up-stagger, counter-up, image-reveal-clip, hero-text-reveal, accordion-smooth, form-success, before-after-slider, cta-attention, magnetic-button, sticky-cta-mobile, scroll-story-steps, tabs-indicator, form-field-feedback
оставить (keep)движение идёт только за рукой человека 1:1scroll-progress-bar
  • Выставляй конечное состояние: from, который не запустился, прячет контент навсегда.
  • В глобальной страховке — animation-duration: .01ms, а не 0s, и animation-iteration-count: 1.
  • Слушай change у matchMedia('(prefers-reduced-motion: reduce)'): настройку меняют на открытой странице.
  • На тёмной теме интенсивность движения и свечения −10–20 %.

9. Производительность

  • Бюджет кадра: 16,7ms при 60 Гц, 8,3ms при 120 Гц, 6,2ms при 165 Гц. Всё, что считается на каждом кадре прокрутки, — сначала все чтения, потом все записи, один requestAnimationFrame.
  • Не больше 20 движущихся элементов в экране. Один наблюдатель (IntersectionObserver) на момент, а не на элемент.
  • Прокрутку не слушать вне экрана: подписка через IntersectionObserver.
  • Не вешать will-change на всё заранее и transition на то, что привязано к прокрутке (начинает отставать).
  • Проверять при замедлении CPU ×4–6 (DevTools → Performance → CPU). Ориентир рецептов каталога: медиана кадра прокрутки 16,6ms, длинных задач нет.

10. Приёмка

  • Посмотри пять раз подряд — раздражает? Нормально ли это на сотый показ (человек вернулся на страницу)? Нет — убирай или смягчай.
  • В браузере (Playwright): нет ошибок в консоли; анимация доходит до конечного состояния; с emulateMedia({ reducedMotion: 'reduce' }) весь контент виден и ничего не движется; без JS контент виден; на 390px нет горизонтальной прокрутки; кадр в середине движения и в конце — глазами.
  • Сдвиг макета: высота блока до и после анимации одинаковая (Lighthouse CLS < 0,1).

11. Где на лендинге что ставить

Выбирай из motion_recipes своей дизайн-системы (там же в motion_map — настройки под стиль). Не больше одного заметного приёма на секцию.

Блок лендингаРецептКогда ставить
Первый экранhero-text-revealзаголовок из 2–4 строк, уровень rich
hero-word-rotator (новое)продукт для нескольких ниш: «Сайт для [стоматологий / юристов]»; с кнопкой паузы
svg-line-draw (новое)подчеркнуть 1–3 слова оффера после появления заголовка (data-sld-delay)
marker-highlight (новое)главная выгода в подзаголовке; одна-две фразы на страницу
gradient-drift, parallax-soft, magnetic-button, cta-attentionфон и кнопка, только если это язык стиля
Доверие под первым экраномmarquee-logosлоготипов больше 6–8
Проблема, «знакомо?»text-scroll-highlight (новое)один крупный абзац 25–60 слов
Как это работаетscroll-story-steps (новое)3–4 шага с кадром на каждый (экран продукта, фото работы)
steps-progress-line (новое)3–6 шагов текстом, без картинок
sticky-stack-cards, fade-up-staggerкарточки шагов
Продукт, доказательствоmedia-zoom-scroll (новое)один главный скрин или кадр — «вау-момент» страницы
image-reveal-clip, before-after-sliderфото результата, «до и после»
Результаты в цифрахresult-bars (новое)«было → стало» по 2–4 показателям, с подписью источника
counter-upотдельные цифры доверия
Тарифыtabs-indicator (новое)«помесячно / за год», вкладки «для кого» (2–4 одинаковой ширины)
tilt-card, fade-up-staggerкарточки тарифов
Частые вопросыaccordion-smooth
Форма заявкиform-field-feedback (новое)всегда вместе с form-success: что поправить → заявка принята
sticky-cta-mobileдлинная страница, форма внизу
Вся страницаscroll-progress-barдлинный лендинг, режим «до формы»

Не для рекламных лендингов: заставки и лоадеры перед контентом, покадровый canvas по прокрутке, подмена курсора, сглаженная прокрутка (Lenis, ScrollSmoother), «перемешивание» букв, морфинг SVG-путей (CSS d не работает в Safari).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.