By following this guide, you will build a fully functional scroll-triggered animation system in Framer that responds to page scroll position — covering entrance animations, parallax layers, and progress-based transitions. The entire setup takes about 90 minutes and works without writing a single line of custom code.
What You'll Build
- A reusable scroll-trigger setup in Framer that fires entrance animations as sections enter the viewport
- A parallax depth layer that moves at a different rate to the page scroll
- A scroll progress indicator that tracks how far down the page a visitor has scrolled
- A staggered card reveal pattern you can duplicate across any section of your site
- An exported, publish-ready Framer page optimised for Core Web Vitals thresholds as of 2026
Prerequisites
- A Framer account (free tier is sufficient; Framer as of June 2026 ships with built-in scroll effects at no extra cost)
- Basic familiarity with the Framer canvas — you should know how to add frames, components, and text layers
- A project with at least three distinct sections (hero, features, CTA) to animate
- No coding experience required; optional Framer overrides are covered in Step 6 for advanced users
Step 1: Set Up Your Framer Project Structure
Start with a clean, well-organised canvas. Scroll animations break when layers are nested incorrectly, so structure matters before you touch a single effect.
Why does layer structure matter before animation?
Framer applies scroll effects to individual layers relative to their parent container. If a text block is nested three levels deep inside an unnamed frame, the scroll offset calculates from the wrong reference point. Flat, named structures prevent this.
- Open your Framer project and rename every top-level section frame:
Section_Hero,Section_Features,Section_CTA. - Set each section frame to Fixed Width with a max-width of 1280px and Fill height so it expands with content.
- Group elements you want to animate together into a single frame. Name these
Animate_CardGroup,Animate_Headline, and so on. - Confirm your layers panel reads cleanly from top to bottom with no unnamed frames at the section level.
Common pitfall: Avoid placing animated layers inside auto-layout stacks at this stage. Auto-layout and scroll effects can conflict in Framer when both apply transform properties simultaneously.
Step 2: Apply Entrance Animations With Framer's Scroll Effects Panel
Framer's built-in Scroll Effects panel (introduced in late 2024 and significantly expanded in the 2025.4 release) handles viewport-triggered entrance animations natively.
- Select the
Animate_Headlineframe on your hero section. - In the right panel, navigate to Scroll Effects → Appear.
- Set Trigger to When in view.
- Choose Fade + Slide Up from the preset list. Set offset to
40pxand duration to0.5s. - Set Easing to
ease-out. This feels natural for entrance motion — objects decelerate as they arrive. - Enable Once so the animation only fires on first entry. Repeat triggers cause distraction on scroll-back.
Pro tip: Keep entrance durations between 0.3s and 0.6s. Interactions Research published by the Nielsen Norman Group suggests animations longer than 0.7s feel sluggish on marketing pages and increase bounce intent.
Step 3: Build a Staggered Card Reveal
Staggered reveals — where cards enter sequentially rather than all at once — guide the eye and create a sense of rhythm. They are one of the highest-impact micro-interactions you can apply to a features grid.
How do you set up stagger in Framer without code?
Framer does not yet expose a native stagger slider in the Scroll Effects panel as of June 2026. You replicate the effect by applying identical entrance animations to each card with incrementally increasing delay values.
- Select your first feature card frame,
Card_01. Apply Fade + Slide Up, duration0.45s, delay0s. - Select
Card_02. Apply the same effect with delay0.1s. - Select
Card_03. Apply the same effect with delay0.2s. - Continue incrementing by
0.1sfor each additional card. Stop at0.4smaximum delay — beyond that, late cards feel forgotten rather than choreographed. - Preview the page. You should see cards sliding in one after another as the section enters the viewport.
Common pitfall: If all cards appear simultaneously, check that each card is a separate, individually named frame — not a component variant inside a single parent frame. Framer applies scroll effects per-frame, not per-variant.
Step 4: Add a Parallax Background Layer
Parallax creates perceived depth by moving a background layer at a slower rate than the foreground. Used subtly, it increases time-on-page. Used excessively, it triggers motion sickness — aim for a movement multiplier between 0.1 and 0.3.
- Add an image or gradient frame behind your hero content. Name it
BG_Parallax. Set its size to 110% of the section height so it has room to move without showing empty space. - Select
BG_Parallax. In Scroll Effects, choose Parallax. - Set the Vertical multiplier to
-0.2. The negative value makes the background move upward as you scroll down, which feels natural. - Set Horizontal to
0. Horizontal parallax on a vertical scroll page is disorienting. - Preview on both desktop (1440px) and mobile (390px). On mobile, consider disabling parallax entirely — it often causes performance regressions on lower-end devices.
When should you skip the parallax effect?
Skip parallax if your page already has heavy video, large images, or complex component interactions. Stacking scroll-driven transforms raises Interaction to Next Paint (INP) scores. Google's Core Web Vitals threshold for INP is under 200ms for a "Good" rating — parallax on resource-heavy pages frequently pushes this past 500ms.
Step 5: Build a Scroll Progress Indicator
A scroll progress bar at the top of the page tells users how much content remains. It is especially effective on long-form landing pages and product tour pages.
- Add a thin rectangle frame at the very top of your canvas. Set dimensions to
100vw × 4px. Name itProgress_Bar. - Set Position to Fixed and pin it to the top of the viewport.
- Select
Progress_Bar. In Scroll Effects, choose Scale X under the Transform options. - Set Start to
0%width at scroll position0px, and End to100%width at the bottom of the page. - Set Origin to Left so the bar fills from left to right.
- Apply your brand accent colour to the fill. Use a solid colour rather than a gradient — gradients scale poorly on this pattern in Framer's current renderer.
Pro tip: This same technique works for section-specific reading progress bars. Scope the start/end scroll values to a specific section's top and bottom positions instead of the full page.
Step 6: Refine With Framer Overrides (Optional, Advanced)
If you need scroll behaviours beyond what the built-in panel offers — such as triggering one element's animation based on another's scroll position — Framer Overrides give you direct access to Framer Motion's API.
What is Framer Motion and how does it relate to Framer?
Framer Motion is the open-source React animation library that powers Framer's canvas renderer. When you write a Framer Override, you are writing a small TypeScript function that passes Framer Motion props directly to any canvas element. As of Framer's 2026 release channel, Overrides support Framer Motion 11.x syntax.
A basic scroll-linked opacity override looks like this:
import { useScroll, useTransform, motion } from "framer-motion"
import type { ComponentType } from "react\




