If you're anything like me, you've always thought of SVGs as a kind of black box; nothing more than a string of code you export from Figma and paste in your code editor, hoping that everything looks right. And sometimes, it does!
But other times, something's not quite right. The color is off. The spacing is a little too tight. The icon's not big enough. When these issues come up, you try to fix them—but you can't. Because the SVG code doesn't make sense.
Interactive SVG Animations is the single course you need to learn all things SVG. Across five chapters, you'll learn how the SVG syntax works, the various ways to animate them, and even dive into SVG features that allow for effects typically impossible with HTML, CSS, and JavaScript alone.
Module 00.
SVG is a markup language, just like HTML. But while HTML has elements for describing documents like p and h1, SVG has elements for describing images like rect and circle.
<circle cx="30" cy="30" r="15"><rect x="25" y="35" width="40" height="30">
Try changing the positions of the circle and rectangle on the canvas and notice how it changes the values in the code!
In this chapter, we'll dive deeper into how to draw various things with SVGs and take a look at how its coordinate system works.
Module 01.
Many SVG attributes are also CSS properties, which means you can animate them the same way you would any other CSS property. There are just a few little quirks you need to be mindful of.
.lid {transform: rotate(30deg);transform-origin: 55px 30px;}
In this chapter, we'll make our first SVG animation by taking a closer look at how CSS interacts with SVG and a few techniques for chaining animations together.
Module 02.
CSS doesn't let you animate every single SVG attribute. To animate those attributes that CSS doesn't support, we'll use SMIL—the "built-in" way of animating SVGs.
<polylinepoints="10,50 30,70 50,30 70,50"fill="none"stroke="currentColor"stroke-linejoin="round"stroke-linecap="round"><animateattributeName="points"to="10,50 30,30 50,70 70,50"dur="1s"/></polyline>
In this chapter, we'll explore how to use SMIL and how we can integrate it in modern codebases.
Module 03.
The SVG path element is the most powerful element in SVG. Using its mysterious d attribute, the path element can mold into every other SVG shape and everything in between.
In this chapter, we'll take apart the d attribute, explore the world of path commands and, of course, take a look at how to animate them.
Module 04.
SVGs start to really shine when you dive into its weirder features. In this chapter, we'll take a look at gradients, masks, and the downright magical world of SVG filters, before looking at ways to animate SVGs when SMIL falls short.
<defs><mask id="circle-mask"><circle cx="25" cy="25" r="15" /><circle cx="55" cy="55" r="15" /></mask></defs><rect mask="url(#circle-mask)" fill="gray" />
It's so good. So much love and care put into this!
This is the ultimate SVG resource—nobody has SVG expertise like Nanda.
Static books and abstract documentation never helped me learn how to make real animations.
Been wanting a course like this for ages.
One of the best animation courses out there on one of the most niche topics in UI.
(This course) convinced me even more that SVG Animations is the future of UI.
First exercise in and I'm hooked—clear, concise, and awesome interactive exercises.
I'm a product designer and software engineer currently leading design engineering at Cloudflare. Before that, I was a design engineer at
I'm also the author of NaNNot a Number, a blog that breaks down various complex computer science concepts in a visual way—read by over 10,000 people a month.
Enroll in the course today and immediately get access to: