Instructions
How to Edit GSAP Animations
Every animation in this template is a Webflow Interaction: open the Interactions panel and everything below is listed there by name.
Where the animations live
In the Designer, open the Interactions panel. The interactions are site wide, so they work on every page, including new ones you build: an element joins an animation by carrying the class or the custom attribute named below. For a visitor who asks for reduced motion, every interaction that moves content either plays to its end at once or does not run, so nothing waits hidden for an animation that will not come.
1. Element map
Twenty interactions, the trigger each one listens to, and what it does. An element with none of these classes or attributes is not animated at all.
01
Headings arrive line by line
Scroll, on any element with data-anim="lines"
The heading is split into lines, and each line rises from under its own mask as the heading reaches 88 per cent down the screen.
02
One paragraph is read word by word
Scroll, on data-anim="read"
The words brighten from 68 to 100 per cent opacity in reading order, tied to the scrollbar. Meant for a single sentence that carries the page.
03
Blocks rise on scroll
Scroll, on data-anim="rise"
A block arrives from 22px below with a short fade.
04
Rows of cells arrive in turn
Scroll, on data-anim="stagger"
The direct children of the block arrive one after another, left to right, from 24px below. Put the attribute on the wrapper, never on the cells: the cells are what moves. The case file strips use it too.
05
Figures settle digit by digit
Scroll, on data-count-from
Each digit of a figure rises from under its own mask, one after another. The value of the attribute is not read; the attribute only marks the figure.
06
Pictures develop in place
Scroll, on .reveal_mask
The frame rises while the photograph inside it settles, moving 4 per cent of its height and scaling from 110 to 100 per cent, tied to the scrollbar. The shift always stays inside the room the scale leaves, so no edge of the frame opens. Any image wrapped in this class gets it.
07
Plates hold their picture back
Scroll, on .plate_component
The full bleed photograph behind a plate drifts against the scroll, 12 per cent of its own height across the whole pass.
08
Chapter rail fills as the section is read
Scroll, on .method_rail
The accent line inside the sticky rail grows from top to bottom while its section crosses the middle of the screen.
09
Header rule shows how far the page is read
Scroll, on .main-wrapper
The accent rule under the navigation fills from left to right over the whole page.
10
Header takes the ground of the section under it
Scroll, on every .section-style-ink section
While an ink section sits under the navigation, the navigation takes the same ink ground and the logo turns to paper.
11
Header takes the ink ground over the footer
Scroll, on .footer_component
The same change over the footer, which sits outside the main content. A scroll trigger is the only trigger an interaction can have, so the footer has its own.
12
Links are pulled out of their line
Hover, on .navbar_link and .footer_link
On mouse devices a navigation or footer link slides 4px to the right while its line takes the accent colour. The line itself is the link's own bottom border; its colour is a hover state of the class.
13
Text links are pulled out of their line
Hover, on .button.is-link
The same 4px slide for a text link, so every link on the page answers in one way.
14
Buttons come forward
Hover, on .button (every variant except the text link and the disabled button)
The button lifts 2px; its fill and text colour change in the hover state of the class.
15
The mark steps forward
Hover, on .navbar_brand
The logo slides 4px to the right.
16
The menu label steps forward
Hover, on .navbar_toggle
Below 992px the word Menu slides 3px to the right inside its button.
17
Register rows open
Hover, on every linked .index_row
The number slides 4px and the text 10px, so the gap between them opens; the line over the row takes the accent colour. A row that is not a link carries is-static and does not move.
18
Case files come forward
Hover, on every linked .card_component
The picture grows to 105 per cent inside its mask, the title slides 6px to the right and the line over the card takes the accent colour.
19
Linked rows open
Hover, on every linked .rows_item
The title column slides 8px to the right.
20
Choices swell
Hover, on .form_check
The checkbox or radio mark grows to 115 per cent and its text slides 3px to the right.
2. Customising the key variables
Every value you are likely to change sits in the interaction itself: select it in the Interactions panel, then the action in its timeline. Slower and softer is usually the right direction: doubling a duration is safe, halving it rarely is.
Speed of the heading arrival
In «Headings arrive line by line» the action lasts 0.7 seconds per line with a 0.07 second stagger between lines. To slow the whole arrival down, raise the duration to 1.2 and the stagger to 0.12.
How dim the unread words start
In «One paragraph is read word by word» the words start at 68 per cent opacity. That is a floor, not a taste: below it the dimmed word drops under the 4.5:1 contrast the rest of the template holds. Raise it towards 100 for a quieter effect. Do not lower it.
How far the photographs travel
In «Plates hold their picture back» the photograph moves from minus 6 to plus 6 per cent of its own height. The image is deliberately 116 per cent of the frame so no edge ever shows. If you raise the travel past 8, raise the height too.
When an animation starts and ends
Each scroll trigger has a start and an end. top 88% means the animation begins when the top of the element reaches 88 per cent down the screen; lower the number to make it start later. Scrub ties the animation to the scrollbar, and its number is the time in seconds it takes to catch up. Switch scrub off and the animation plays once at its own speed.
3. Removing an animation
Three ways, depending on how much you want gone.
One element. Remove the attribute or the class from that element in the Designer. For a heading, delete data-anim="lines" from its custom attributes. The heading then appears with the page, in place, with no other change to the layout.
One whole animation, everywhere. Delete that interaction in the Interactions panel. Nothing in the layout depends on it: every element is styled into its final position by its class, and the interaction only changes how it arrives.
All of it. Delete every interaction in the panel. The navigation below 992px keeps working: the header is Webflow's own Navbar, and the menu opens with the Navbar's own animation.
What you will see afterwards: headings, paragraphs, figures and images appear immediately instead of arriving; the photographs sit still instead of drifting; hovering a link, a row or a case file no longer moves it, only the colours still change; the rail keeps its labels but loses the filling line; the rule under the navigation stays empty; the navigation keeps its paper ground over ink sections.
