Scroll Progress Timeline
Meng ToCommunityCreated by Meng To
- Skill
- Guidelines
- Software development
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides technical patterns and best practices for creating scroll-triggered timelines. It emphasizes a data-driven approach where content is structured as an ordered list before animation layers are applied. The guide covers geometric calculations for progress lines, layout strategies for various screen sizes, animation techniques, accessibility considerations, and handling reduced-motion preferences.
What it does
- Defines a data-driven structure for ordered process steps.
- Provides logic for calculating and rendering scroll-based progress lines.
- Offers layout strategies for vertical, horizontal, and responsive timeline configurations.
- Details methods for animating step states and managing scroll-triggered interactions.
- Outlines accessibility requirements including focus management and semantic markup.
- Specifies implementation requirements for reduced-motion user preferences.
When to use it
- When building onboarding flows, checkout processes, or step-by-step guides.
- When visualizing progress through roadmaps, histories, or service narratives.
- When you need to coordinate visual animations with user scroll position.
- When ensuring a timeline remains readable and navigable without animation.
Advantages
- Ensures content remains accessible and readable as a semantic document.
- Provides a robust method for normalizing scroll position across different layouts.
- Includes specific guidance for responsive design and reduced-motion support.
- Separates content structure from visual animation logic.
Usage examples
- “How should I structure the data for a three-step process timeline?”
- The guide provides a JavaScript array pattern using objects with id, number, title, and body properties to ensure the timeline remains data-driven.
- “What is the best way to handle scroll progress for a vertical timeline?”
- It recommends measuring the distance between the first and last point centers and applying a CSS transform scale to the progress line within an animation frame.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/mengto/scroll-progress-timeline/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip scroll-progress-timeline.zip -d .agents/skills
Documentation by Meng To
Scroll Progress Timeline
Use one progress line to connect ordered information. The sequence must remain complete, readable, and navigable before animation is added.
Model the steps
Keep the content data-driven:
const steps = [
{ id: "brief", number: "01", title: "Set the direction", body: "..." },
{ id: "build", number: "02", title: "Make the system", body: "..." },
{ id: "ship", number: "03", title: "Release and learn", body: "..." }
];Render it as an ordered list with real headings. The line, dots, media, and active state enhance that structure; they do not replace it.
Build the line
Render a quiet base line behind every point.
Place one progress line on top with
transform-origin: topfor vertical orleftfor horizontal.Measure the first and last point centers, not arbitrary section edges.
Normalize scroll position between those centers.
Apply
scaleY(progress)orscaleX(progress)so updates stay on the compositor.Mark a step active when the progress head crosses its center.
const progress = Math.min(1, Math.max(0,
(viewportAnchor - lineStart) / (lineEnd - lineStart)
));
line.style.transform = `scaleY(${progress})`;Schedule DOM writes in one animation frame. Recalculate geometry after font and image loading, resize, orientation changes, and content mutation.
Choose the layout
Use a centered alternating timeline only when both sides have enough width and similar content weight.
Use a left rail for long copy, compact steps, or mixed card heights.
Use a horizontal line for short sequences with concise labels and explicit keyboard-safe overflow.
Use pinned full-screen chapters only when each step carries a distinct visual state. Keep the pin finite and release before the next section.
Collapse to a simple left rail on small screens. Do not preserve alternation at the expense of reading order.
Animate step state
Use small opacity, translate, scale, blur, color, or media transitions. Keep every step readable while inactive. Expose active index with aria-current="step" only when that state is meaningful and current; do not announce every scroll update with a live region.
Use IntersectionObserver for simple active-state entry. Use a normalized scroll measurement or GSAP ScrollTrigger when the line must fill continuously or coordinate pinned media.
Handle navigation
Make step links real anchors when users can jump within the process.
Add
scroll-marginfor sticky headers.Preserve focus and do not move it during passive scrolling.
Keep URLs and browser history stable unless the user explicitly selects a step.
If steps are interactive, use buttons or links with visible focus; never make a decorative dot the only control.
Reduce motion
Under prefers-reduced-motion: reduce, show the complete line or discrete reached states without scrubbed interpolation, blur, pinning, or large transforms. Keep ordinary document flow and all step content.
Verify
Test variable step counts, uneven card heights, missing media, long translations, 390/768/1024/1440 widths, 200% zoom, fast forward and reverse scrolling, direct anchor navigation, keyboard order, reduced motion, late font/image layout, route cleanup, and console errors. The active step and line head must agree at every boundary.
Use demo/index.html as the working reference and demo/PROMPT.md to recreate or remix it. Keep REFERENCES.md as the links-only implementation source list.
Files
- ATTRIBUTION.mdAdded by AutoGineer870 B
- LICENSELicence file added by AutoGineer1.0 KiB
- REFERENCES.md495 B
- SKILL.md3.9 KiB
- agents/openai.yaml246 B
- demo/PROMPT.md1.8 KiB
- demo/index.html11.8 KiB
- demo/preview.jpg97.4 KiB
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Meng To
- Publisher
- Meng To (Community)
- Source
- MengTo/Skills · agent-skills/web-design/scroll-progress-timeline · commit 5ea1661
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Meng To or Meng To.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download scroll-progress-timeline.zip