Skip to content

Path Animations

Introduction

Path animations involve animating elements along predefined SVG paths. This technique is often used to create smooth and intricate animations that follow complex trajectories. By leveraging SVG paths and combining them with JavaScript animation libraries like Anime.js and GreenSock (GSAP), you can create engaging and dynamic animations.

Basic Concepts

SVG Path Data

SVG paths are defined using the d attribute, which contains a series of commands and coordinates that describe the shape and trajectory of the path. Animating along these paths allows for precise control over movement.

Key Attributes for Path Animations

  • d: Defines the path data.
  • stroke-dasharray: Used to create dashed lines and animate paths.
  • stroke-dashoffset: Used to animate the drawing of the path.

Example: Simple Path Animation with CSS

SVG Structure

Here's a basic SVG with a path and a circle that will animate along the path.

xml
<svg width="400" height="200" viewBox="0 0 400 200" xmlns="http://www.w3.org/2000/svg">
  <path id="path" d="M10,90 Q140,10 280,90 T400,90" stroke="black" fill="transparent" />
  <circle id="circle" r="5" fill="red" />
</svg>

Adding CSS Animation

You can use CSS animations to move the circle along the path using the stroke-dasharray and stroke-dashoffset properties.

html
<style>
  #path {
    stroke-dasharray: 1000;
    stroke-dashoffset: 1000;
    animation: draw 5s linear forwards;
  }

  @keyframes draw {
    to {
      stroke-dashoffset: 0;
    }
  }

  @keyframes moveAlongPath {
    from {
      offset-distance: 0%;
    }
    to {
      offset-distance: 100%;
    }
  }

  #circle {
    offset-path: path('M10,90 Q140,10 280,90 T400,90');
    offset-distance: 0%;
    animation: moveAlongPath 5s linear forwards;
  }
</style>

Example: Path Animation with Anime.js

SVG Structure

Here’s an example of animating a circle along a path using Anime.js.

xml
<svg width="400" height="200" viewBox="0 0 400 200" xmlns="http://www.w3.org/2000/svg">
  <path id="animePath" d="M10,90 Q140,10 280,90 T400,90" stroke="black" fill="transparent" />
  <circle id="animeCircle" r="5" fill="blue" />
</svg>

Adding Path Animation with Anime.js

html
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
<script>
  anime({
    targets: '#animeCircle',
    translateX: [
      { value: anime.path('#animePath').x, duration: 5000 },
    ],
    translateY: [
      { value: anime.path('#animePath').y, duration: 5000 },
    ],
    easing: 'linear',
    loop: true
  });
</script>

Example: Path Animation with GSAP

SVG Structure

Here’s an example of animating a circle along a path using GSAP.

xml
<svg width="400" height="200" viewBox="0 0 400 200" xmlns="http://www.w3.org/2000/svg">
  <path id="gsapPath" d="M10,90 Q140,10 280,90 T400,90" stroke="black" fill="transparent" />
  <circle id="gsapCircle" r="5" fill="green" />
</svg>

Adding Path Animation with GSAP

html
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/MotionPathPlugin.min.js"></script>
<script>
  gsap.registerPlugin(MotionPathPlugin);

  gsap.to('#gsapCircle', {
    duration: 5,
    repeat: -1,
    yoyo: true,
    ease: 'linear',
    motionPath: {
      path: '#gsapPath',
      align: '#gsapPath',
      autoRotate: true,
      alignOrigin: [0.5, 0.5]
    }
  });
</script>

Conclusion

Path animations add a dynamic and visually appealing element to your web projects. By leveraging SVG paths and using powerful animation libraries like Anime.js and GSAP, you can create smooth, complex animations that follow predefined trajectories. Whether you're animating along straight lines or complex curves, these tools provide the flexibility and control needed to create engaging path animations.