--- 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 `` 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 ``` ## Keyframes ```html ``` ## Tailwind example ```html
...
``` ## 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?