К основному содержанию
скилл CX Codex

animation-on-scroll — скилл для Claude Code: анимация при скролле

Скилл добавляет элементам появление при входе во вьюпорт: IntersectionObserver плюс классы и кейфреймы под Tailwind.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add MengTo/Skills --skill animation-on-scroll -a claude-code
Открыть на GitHub

Что делает animation-on-scroll

Скилл описывает рабочий процесс из трёх шагов: сначала уточняет стиль анимации, тайминг и нужно ли проигрывать её один раз или повторять, затем выдаёт кейфреймы, JS-сниппет наблюдателя и точный класс Tailwind, а после — точечные правки по threshold, rootMargin, длительности, задержке и значениям transform и blur.

Внутри два блока кода. Первый — скрипт с IntersectionObserver: он вставляет стили с animation-play-state: paused, вешает наблюдатель с threshold: 0.2 и rootMargin: "0px 0px -10% 0px", а при пересечении добавляет элементу класс animate. Второй — кейфреймы animationIn с прозрачностью, сдвигом по Y и размытием. В разметке это выглядит как animate-on-scroll [animation:animationIn_0.8s_ease-out_0.1s_both].

Скрипт нужно вставить в <head> после кейфреймов, иначе анимация не запустится. Имя кейфрейма в Tailwind-значении должно совпадать с объявленным — расхождение здесь ломает всё молча. Ещё одна частая осечка: элемент уже виден до инициализации наблюдателя, и тогда анимации не будет. Повтор при повторном входе включается переменной once = false.

Какие задачи решает

  • сделать появление блоков при скролле без сторонних библиотек
  • подключить scroll-reveal к проекту на Tailwind
  • настроить задержку и длительность анимации под макет
  • запускать анимацию один раз или при каждом входе во вьюпорт
  • починить анимацию, которая не срабатывает из-за порядка подключения кода

Примеры запросов агенту

  • добавь scroll-reveal для секции с карточками, анимация один раз
  • сделай появление заголовка с блюром и сдвигом вверх на Tailwind
  • анимация не запускается — проверь, что кейфреймы идут перед скриптом

Как установить animation-on-scroll

1Через Skills CLI (Vercel)

npx skills add MengTo/Skills --skill animation-on-scroll -a claude-code

2Вручную: положить файлы

~/.claude/skills/animation-on-scroll/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/animation-on-scroll/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора148

beautiful-shadows Скилл подставляет точные arbitrary-классы теней Tailwind для карточек, панелей и поповеров. Пригодится, когда стандартные shadow-sm и shadow-lg выглядят грубо. CX Codex +1 2 200установок cinematic-scroll-storytelling Настраивает плавную прокрутку и сценарную анимацию страниц через Lenis и GSAP ScrollTrigger. Пригодится при сборке редакционных лендингов, стопок карточек и кинетической типографики. CX Codex +1 2 100установок threejs Помогает агенту собирать и отлаживать интерактивные 3D-сцены на Three.js: сцена, камера, свет, загрузка glTF, контролы и производительность. CX Codex +1 2 000установок landing-page Скилл помогает спроектировать или переписать целевую страницу под одно предложение для веб-сервисов и SaaS. Задаёт структуру секций, тексты выгод и обработку возражений. CX Codex +1 2 000установок animation-systems Инструкции для агента по созданию сдержанной веб-анимации в стиле Stripe, Linear и Apple. Пригодится при вёрстке интерфейсов, модальных окон и карточек. CX Codex +1 1 900установок gsap Скилл для ИИ-агента, который помогает писать и отлаживать веб-анимации на GSAP: таймлайны, ScrollTrigger, stagger, трансформации. CX Codex +1 1 800установок design-first-ui-prompting Превращает сырые идеи интерфейсов в строгие спецификации для генерации UI. Помогает фиксировать сетку, типографику и отступы по правилам дизайн-систем. CX Codex +1 1 800установок gsap-scrolltrigger-storytelling Скилл для скролл-сторителлинга: закреплённые секции, послойное появление интерфейса и переходы между сценами на GSAP ScrollTrigger. CX Codex +1 1 800установок

Похожие

scroll-animations dylantarre Скилл для анимаций, привязанных к прокрутке: появления блоков, параллакс, липкие шапки, индикаторы прогресса. Пригодится, когда страница должна реагировать на скролл, а не просто листаться. CX Codex +1 1 100установок scroll-craft nateherkai Скилл планирует и собирает прокручиваемый лендинг: интервью, порядок секций, эмоциональный пик, объёмный hero и проверка скриншотами. CX Codex +1 1 200установок framer-motion-scroll C-Jeril Скилл для Framer Motion: подсказывает агенту, как делать анимации, привязанные к прокрутке, параллакс и индикаторы прогресса. CX Codex +1 803установок css-animation-creator OneWave-AI Скилл для ИИ-кодинга, который помогает писать CSS-анимации, переходы, микроинтеракции и анимации по скроллу. Пригодится, когда нужно добавить движение в интерфейс без ручного подбора таймингов. CX Codex +1 805установок animation-micro-interaction-pack patricio0312rev Набор готовых паттернов движения для интерфейса: ховеры, входы и выходы элементов, отклик на жесты. Пригодится, когда UI выглядит статично и хочется оживить его без ручного подбора таймингов. CX Codex +1 499установок animation-performance emilkowalski Диагностический скилл, который ищет причину пропущенных кадров в веб-анимациях и подсказывает, какой свойство анимировать вместо дорогого. CX Codex +1 36 800установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о animation-on-scroll

Как установить animation-on-scroll в Claude?

Выполните npx skills add MengTo/Skills --skill animation-on-scroll -a claude-code. Скилл окажется в ~/.claude/skills/animation-on-scroll/SKILL.md.

Что делает animation-on-scroll?

Помогает настроить появление элементов при входе во вьюпорт: отдаёт кейфреймы, JS-сниппет на IntersectionObserver и класс для Tailwind.

Почему анимация не срабатывает?

Скилл называет три причины: кейфреймы подключены после скрипта, имя кейфрейма не совпадает с тем, что указано в Tailwind, либо элемент уже был в зоне видимости до инициализации наблюдателя.

Исходный текст

SKILL.md · MIT
---
name: animation-on-scroll
description: Create an on-scroll animation trigger using IntersectionObserver with Tailwind-friendly animation classes and keyframes. Use when asked for scroll-reveal, animate-on-scroll, or sequencing element animations when they enter the viewport.
---

# Animation On Scroll Skill

## Workflow
1. Confirm animation style, timing, and whether animations should run once or repeat.
2. Provide the keyframes + JS observer snippet and the exact Tailwind class to apply.
3. Offer focused tweaks only (threshold, rootMargin, duration, delay, transform/blur values).

## Usage checklist
- Insert the JS snippet in the `<head>` after the keyframes.
- Add the animation class and `animate-on-scroll` to elements.
- Ensure your keyframes name matches the Tailwind animation reference.

## IntersectionObserver trigger
```html
<script>
  /*
    Sequence animation on scroll when visible. Requires Animation Keyframe. Usage:

    1) Insert this code in the <head> along with the Animation Keyframe code.

    2) Add to Tailwind Classes: [animation:animationIn_0.8s_ease-out_0.1s_both] animate-on-scroll
  */
  (function () {
    // Inject CSS for paused/running states
    const style = document.createElement("style");
    style.textContent = `
      /* Default: paused */
      .animate-on-scroll { animation-play-state: paused !important; }
      /* Activated by JS */
      .animate-on-scroll.animate { animation-play-state: running !important; }
    `;
    document.head.appendChild(style);

    const once = true;

    if (!window.__inViewIO) {
      window.__inViewIO = new IntersectionObserver((entries) => {
        entries.forEach((entry) => {
          if (entry.isIntersecting) {
            entry.target.classList.add("animate");
            if (once) window.__inViewIO.unobserve(entry.target);
          }
        });
      }, { threshold: 0.2, rootMargin: "0px 0px -10% 0px" });
    }

    window.initInViewAnimations = function (selector = ".animate-on-scroll") {
      document.querySelectorAll(selector).forEach((el) => {
        window.__inViewIO.observe(el); // observing twice is a no-op
      });
    };

    document.addEventListener("DOMContentLoaded", () => initInViewAnimations());
  })();
</script>
```

## Keyframes
```html
<style>
  /*
    Sequence animation intro. Usage:

    1) Insert this code in the <head>

    2) Add to Tailwind Classes: [animation:animationIn_0.8s_ease-out_0.1s_both]
  */
  @keyframes animationIn {
    0% {
      opacity: 0;
      transform: translateY(30px);
      filter: blur(8px);
    }

    100% {
      opacity: 1;
      transform: translateY(0);
      filter: blur(0px);
    }
  }
</style>
```

## Tailwind example
```html
<div class="animate-on-scroll [animation:animationIn_0.8s_ease-out_0.1s_both]">
  ...
</div>
```

## Customization knobs
- Trigger: adjust `threshold` and `rootMargin` for earlier/later reveals.
- Repeat: set `once = false` to allow replays when re-entering.
- Motion: tweak `translateY` and `blur` in keyframes.
- Timing: change duration and delay in the Tailwind animation value.

## Common pitfalls
- Forgetting to include the keyframes before the JS snippet.
- Using a different keyframe name than in the Tailwind animation.
- Animations not running because the element is already in view before observer init.

## Questions to ask when specs are missing
- Should animations run once or every time the element re-enters?
- How far before entering the viewport should they start?
- What motion style (fade, slide, blur, scale) do you want?

© MengTo · MIT · MengTo/Skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой