Animation & Interaction Guide
This guide explains each animation and interactive component included in your template. What it does, how it’s structured, and which code values you can safely edit to adjust timing, easing, or behavior.
Tip 💡
Only edit the code values shown under “Editable Code Values.” Avoid renaming classes or altering structure, as they’re referenced directly by the scripts.
Mouse Trail
Selector: .trail__component
What it does
Displays a trail of images that follow the user’s cursor when hovering over the section. Each image fades in, moves toward the new mouse position, then fades and scales out.
Key functions
spawnTrailImage(x, y) Handles the creation and animation of each image clone. Uses GSAP timelines for fade, movement, and scale transitions.
animateTrail() Continuously checks mouse movement and triggers new images when the cursor has moved beyond a certain threshold.
Editable Code Values
const trailThreshold = 100; // Distance in pixels the mouse must move before spawning a new image.to(img, { opacity: 1, duration: 0.2, ease: "power2.out" }) // fade in
.to(img, { duration: 0.6, ease: "expo.out" }) // move
.to(img, { opacity: 0, scale: 0.2, duration: 0.5, ease: "power3.in" }) // fade out + shrink
You can modify
duration, ease, or scale values to change the motion speed and feel.
Disable animation
To temporarily disable the code, comment out the whole block like this.
<!--
ALL THE CODE HERE WILL BE DISABLED
-->Number Counter
Selector: .stat__number
What it does
Counts up from 0 to the target number when the element scrolls into view. Works with decimals and keeps suffixes (like %, K, +).
Key functions
extractNumber(text) Removes all non-numeric characters to get the numeric value.
animateCounter(element) Animates the number from 0 to its final value using GSAP, updating the displayed text on every frame.
Editable Code Values
const counterDuration = 2.5; // Animation duration in secondsgsap.to(counterObj, {
value: targetNumber,
duration: counterDuration,
ease: "expo.out", // Easing for the count-up motion
onUpdate: () => {
element.textContent = formatNumber(counterObj.value, decimals) + suffix;
}
});You can modify
counterDuration → controls how fast the counter runs
ease → try "power2.out", "sine.out", or "linear" for different pacing
Disable animation
To temporarily disable the code, comment out the whole block like this.
<!--
ALL THE CODE HERE WILL BE DISABLED
-->Heading Reveal
Selector: .text-animation
What it does
Reveals headings and paragraphs with a staggered animation as they scroll into view. Each character rises and unblurs smoothly for a clean entry effect.
Key functions
SplitText() Splits each text block into characters for individual animation control.
revealTimeline ScrollTrigger-powered animation timeline that controls the entry of characters.
Editable Code Values
.from(splitChars, {
duration: 0.7,
y: "60%",
rotationX: -90,
ease: "power1.inOut",
stagger: { amount: 1.0 }
})
.to(splitChars, {
duration: 1.0,
ease: "power2.out",
stagger: { amount: 1.0 }
})gsap.to(counterObj, {
value: targetNumber,
duration: counterDuration,
ease: "expo.out", // Easing for the count-up motion
onUpdate: () => {
element.textContent = formatNumber(counterObj.value, decimals) + suffix;
}
});You can modify
duration, ease, or stagger.amount to modify speed and rhythm of the reveal.
Disable animation
To temporarily disable the code, comment out the whole block like this.
<!--
ALL THE CODE HERE WILL BE DISABLED
-->Text Split
Selector: .text-split
What it does
Splits each character into two stacked layers that animate vertically on hover — the main character slides out, and the duplicate slides in.
Key functions
Character setup
Creates two spans per character (.char-main and .char-duplicate) and wraps them for vertical movement.
Hover timelines
Two GSAP timelines control hover-in and hover-out states.
Editable Code Values
.to(mainChars, {
y: "-100%",
duration: 0.3,
ease: "power2.out",
stagger: 0.02
})gsap.to(counterObj, {
value: targetNumber,
duration: counterDuration,
ease: "expo.out", // Easing for the count-up motion
onUpdate: () => {
element.textContent = formatNumber(counterObj.value, decimals) + suffix;
}
});You can modify
duration → how fast each character moves
stagger → delay between characters
ease → the motion curve (try "power3.out" or "back.out(1.7)")
Disable animation
To temporarily disable the code, comment out the whole block like this.
<!--
ALL THE CODE HERE WILL BE DISABLED
-->Digital Clock
Selector: .digital-clock__component
What it does
Displays a live digital clock, automatically updating every second and showing the chosen timezone in either 12-hour or 24-hour format.
Key functions
updateClock() Gets the current time and updates the DOM every second.
Blinking colon
Uses GSAP to fade the colon in and out continuously.
Editable Code Values
const clockTimezone = "America/New_York"; // Change to your desired timezone
const clockFormat24 = false; // true = 24h format, false = 12h format
repeatDelay: 0.5 // Controls blink speed of the colon
Disable animation
To temporarily disable the code, comment out the whole block like this.
<!--
ALL THE CODE HERE WILL BE DISABLED
-->Theme Toggle
Selector: .theme__component
What it does
Toggles between light and dark themes on click. The chosen mode is saved in local storage and applied automatically on page load.
Key functions
Adds or removes the .theme--alternate class from the <body> element.
Editable Code Values
If you’re using a different theme class, update this line:
body.classList.add("theme--alternate");Disable animation
<!--
ALL THE CODE HERE WILL BE DISABLED
-->To temporarily disable the code, comment out the whole block like this.
Smooth Scroll
What it does
Lenis creates a smooth scrolling experience across the entire site. It’s added in your Site Settings under Custom Code.
Editable Code Values
<script src="https://cdn.jsdelivr.net/npm/@studio-freight/lenis@1.0.42/dist/lenis.min.js"></script>
<script>
const lenis = new Lenis({
smooth: true,
lerp: 0.1,
wheelMultiplier: 1,
infinite: false,
});
function raf(time) {
lenis.raf(time);
requestAnimationFrame(raf);
}
requestAnimationFrame(raf);
</script>You can modify
lerp: 0.1 // Adjusts scroll smoothness
wheelMultiplier: 1 // Controls scroll distance per inputDisable animation
To temporarily disable the code, comment out the whole block like this.
<!--
ALL THE CODE HERE WILL BE DISABLED
-->Support
Need more informations or want to learn more?
Getting started with webflow
In this learning path, you’ll discover all the things that make Webflow a unique, visual-first website experience platform. Whether you’re a designer, developer, marketer, or other Webflow champion, you’ll walk away with the foundations you need to start your journey.
Webflow 101
Make the most out of this template by familiarizing yourself with Webflow basics using Webflow 101 Crash Course.
This course provides an overview of the Webflow UI, basic building blocks of the web, positioning and layout basics — all of which you’ll need to know to get up and running with this template.
Material icons
Google Material Icons is a comprehensive collection of symbols designed by Google following their Material Design guidelines. These icons are available as a font family already incorporated into this project, making them lightweight and easily scalable.
To find the exact icon you need, visit the Material Icons webpage where you can browse the complete library. Click on any icon to copy the Icon name from the icon menu.
To add a new icon or replace an existing one, simply add a text element with the class "material-icons" and insert the icon name in the text field. You can customize the icons appearance using standard CSS properties such as color, font-size or font-weight.
SVG
SVG is a powerful web technology that allows designers and developers to create interactive and scalable graphics for their websites.
To edit an SVG inside your Webflow project, click on the "Open Code Editor" button within the Embed element settings. This will open the code editor where you can modify the SVG code directly.
To find inspiration or reference additional SVGs, you can browse online libraries where you can view and download various vector graphics. Simply copy the SVG code from these resources and paste it into your project's code editor.
You can style and animate your SVGs using Webflow's visual design tools. Apply color changes, gradients, opacity adjustments, borders, and more through the standard styling options. Enhance user experience by adding hover effects, click triggers, or complex animations using Webflow's interactions panel.
License
Not sure where and how often you can use this Webflow template? This licensing guide breaks down all the rules for you.
Contact
Want to get in touch?