Scroll Animation for Framer: Adding Frame-by-Frame Scroll Sequences
Framer is animation-first — its scroll interactions are some of the best in the website builder space. But frame-by-frame, video-derived scroll animation still requires an embed. This guide shows you when to reach for ScrollerSites instead of Framer's built-in tools.
// Manual scroll animation on Framer — 47+ lines before mobile
const canvas = document.getElementById('scroll-canvas');
const ctx = canvas.getContext('2d');
const frames = [];
let currentFrame = 0;
async function preloadFrames(count) {
await Promise.all(Array.from({ length: count }, (_, i) => {
const img = new Image();
const padded = String(i).padStart(4, '0');
img.src = `https://your-cdn.com/frames/frame-${padded}.jpg`;
frames.push(img);
return new Promise((r) => { img.onload = r; img.onerror = r; });
}));
}
function drawFrame(index) {
if (!frames[index]) return;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(frames[index], 0, 0, canvas.width, canvas.height);
}
window.addEventListener('scroll', () => {
const rect = canvas.parentElement.getBoundingClientRect();
const scrolled = -rect.top;
const total = rect.height - window.innerHeight;
const progress = Math.max(0, Math.min(1, scrolled / total));
const frameIndex = Math.floor(progress * (frames.length - 1));
if (frameIndex !== currentFrame) {
currentFrame = frameIndex;
requestAnimationFrame(() => drawFrame(currentFrame));
}
}, { passive: true });
// Still needed: resize handler, mobile touch events,
// Safari canvas fix, Framer override code injection,
// CDN setup for 120+ JPEG files, lazy loading...
preloadFrames(120).then(() => drawFrame(0));<!-- Add a Framer Embed component and paste this -->
<div data-scrollersite="YOUR_PROJECT_ID"></div>
<script src="https://cdn.scrollersites.com/embed/v1/player.js" defer></script>Framer's Built-In Scroll Animation
Framer supports scroll-tied animation through its overrides API and the Scroll component. You can do parallax, scroll-linked transforms, and timeline scrubbing. For developers comfortable in code, you can build almost anything.
- ● Framer Scroll component for parallax and section reveals
- ● Override API for advanced scroll-linked animation
- ● Custom code components for full control
When to Use ScrollerSites in Framer
If your scroll animation source is a video — a 3D render, a product rotation, a process walkthrough — ScrollerSites extracts the frames and hosts them on a CDN. Drop a Framer Embed component, paste the snippet, done. You skip the override-API learning curve.
- ● Use ScrollerSites when the animation is video-derived
- ● Use ScrollerSites when you need cross-platform frame sequences (animated on Framer + Shopify + WordPress with the same embed)
- ● Use Framer overrides when the animation is UI-derived (text, icons, layered components)
Ready to Add Scroll Animation?
Skip the override-API learning curve — get cinematic scroll animation in Framer with two lines of HTML.
Get Started Free →Related Platform Guides
Scroll Animation for Webflow: Beyond the Built-In Interactions
Webflow has built-in scroll interactions, but they don't cover frame-by-frame scroll animation. See how ScrollerSites fills the gap.
Scroll Animation for WordPress: The Complete Guide (2026)
Add Apple-style scroll animation to your WordPress site. Compare the plugin/manual approach vs. the ScrollerSites embed — paste into any block or theme template.
Scroll Animation for Squarespace: Beyond the Built-In Effects
Squarespace has limited scroll animation options. Add Apple-style scroll-driven animation using the Code Block and the ScrollerSites embed.
Related Articles
Apple-Style Scroll Animation: How Top Brands Use It
Apple's product pages set the standard for scroll-driven animation. Here's the breakdown of how they do it and how brands like Stripe and Linear adapt the pattern.
Scroll Animation vs. Parallax: Which One Converts Better?
Parallax and scroll animation look similar but solve different problems. Here's how to choose, with conversion data and examples.