Want to create scroll-based SVG animations without writing complex JavaScript or messing with CSS keyframes?
With Xyris, a visual SVG animation editor, you can design animations visually – and then use just a few lines of JavaScript to trigger them based on scroll. This is the simplest, cleanest way to create professional-looking scroll animations.
Why Use Xyris?
Xyris is a visual animation editor that simplifies the entire SVG animation workflow – especially when paired with scroll interaction.
Here’s why it stands out:
- No manual animation coding: Animate paths, shapes, groups, and transforms directly in the editor.
- Export as SMIL: Xyris lets you export your SVG animation in SMIL format, a declarative animation language built into SVG.
- Control with a single line of JavaScript : Once exported, your animation timeline can be scrubbed with:
svg.setCurrentTime(time);
- Clean separation of concerns: Designers handle animation visually; developers only wire it to scroll.
By using SMIL, Xyris enables an elegant and efficient integration where scroll position becomes a simple input to control the entire animation – no need for external libraries, complex frame calculations, or timing functions.
A Minimal Example
1. Design the Animation in Xyris
Animate your SVG visually with Xyris then export . If you’re new to the app, check out the tutorials at: https://www.youtube.com/@XyrisApp
2. Insert the SVG content to your page.
Note: If you are using WordPress, you can use a Custom HTML widget.
Follow the steps below:
- In Xyris, select Export.
- Click Copy As SVG (XML).
- Paste the content to your page.
3. Use JavaScript to Update Progress on Scroll
Place the following code right after the closing </svg>
tag. Please note that we need to specify the id for the inserted svg element.
<script>
const svg = document.getElementById('mySvg');
const maxTime = 3.0; // duration of the SMIL animation
svg.pauseAnimations();
window.addEventListener('scroll', () => {
const rect = svg.getBoundingClientRect();
const viewportHeight = window.innerHeight;
// Our animation logic, start the animation when the svg fully appeared,
// and end the animation when the svg reach the top of the window
const progress = 1 - (rect.top / (viewportHeight- rect.height));
// Clamp between 0 and 1
const clamped = Math.max(0, Math.min(1, progress));
// Set animation time based on progress
svg.setCurrentTime(clamped * maxTime);
});
</script>
Here is an illustration of what we’ve accomplished:
Why This Works Well
By using Xyris:
- You avoid low – level SVG animation scripting
- Designers can create animations without touching code
- Developers only need to connect scroll → progress
It’s the best of both worlds: visual creativity + code simplicity.
Final Thoughts
Using Xyris for scroll-triggered SVG animations dramatically simplifies the process. You design visually, export once, and connect it to scroll with minimal JavaScript.
If you’re looking to create elegant SVG animations with just a few lines of code – this is it.