Day 21: How to use clip-path with SVG

This ornament is the same as we drew on the first day, except it has a motif on its side defined as a polyline. By default, the polyline wouldn’t match the edge of the circle shape. Without clipping this motif would look like this:

We use clip-path here to make sure that the motif fits perfectly on the ornament. The clip-path is defined in the definitions section.

Here we define a clipPath with an ID. The content of this clip-path is a circle that matches the size of our ornament. Then we use it to clip the polyline, by setting its clip-path property.

<svg width="200" height="200" viewBox="-100 -100 200 200">
  <clipPath id="ball">
    <circle cx="0" cy="20" r="70" />
  </clipPath>

  <circle cx="0" cy="20" r="70" fill="#D1495B" />

  <polyline
    clip-path="url(#ball)"
    points="-120 40 -80 0 -40 40 0 0 40 40 80 0 120 40"
    fill="none"
    stroke="#9C2D2A"
    stroke-width="20"
  />

  <circle
    cx="0"
    cy="-75"
    r="12"
    fill="none"
    stroke="#F79257"
    stroke-width="2"
  />
  <rect x="-17.5" y="-65" width="35" height="20" fill="#F79257" />
</svg>