docs.rodeo

MDN Web Docs mirror

path()

{{CSSRef}} 

The path() CSS function accepts an SVG path string, and is used in the CSS shapes and CSS motion path modules to enable a shape to be drawn. The path() function is a {{cssxref("<basic-shape>")}}  data type value. It can be used in the CSS offset-path and clip-path properties and in the SVG d attribute.

There are some limitations to using the path() function. The path has to be defined as a single string, so a custom path can’t be created using variables (var() functions). Also, all the lengths in the path are implicitly defined in pixel (px) units; other units can’t be used. The shape() function offers more flexibility than the path() function.

{{EmbedInteractiveExample("pages/css/function-path.html")}} 

Syntax

When used in {{cssxref("offset-path")}}  or {{cssxref("d")}} :

path(<string>)

When used in {{cssxref("clip-path")}} :

path( [<fill-rule>,]? <string> )

Parameters

Return value

Returns a {{cssxref("basic-shape")}}  value.

Formal syntax

{{csssyntax}} 

Examples

Examples of correct values for path()

path("M 10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80");
path(evenodd,"M 10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80");

Using a path() function as an offset-path value

A path() function has been provided as an {{cssxref("offset-path")}}  value in the following example to create an elliptical path for a ball to move along.

<div id="path">
  <div id="ball"></div>
</div>
<button>animate</button>
#path {
  margin: 40px;
  width: 400px;
  height: 200px;

  /* draw the gray ramp */
  background: radial-gradient(at 50% 0%, transparent 70%, grey 70%, grey 100%);
}

#ball {
  width: 30px;
  height: 30px;
  background-color: red;
  border-radius: 50%;

  /* mark the elliptical path */
  offset-path: path("M 15 15 A 6 5.5 10 0 0 385 15");
}
const btn = document.querySelector("button");
const ball = document.getElementById("ball");

btn.addEventListener("click", () => {
  btn.setAttribute("disabled", true);
  setTimeout(() => btn.removeAttribute("disabled"), 6000);

  ball.animate(
    // animate the offset path
    { offsetDistance: [0, "100%"] },
    {
      duration: 1500,
      iterations: 4,
      easing: "cubic-bezier(.667,0.01,.333,.99)",
      direction: "alternate",
    },
  );
});

{{EmbedLiveSample("Use as the value of offset-path", "100%", 350)}} 

Modify the value of the SVG path d attribute

The path() can be used to modify the value of the SVG d attribute, which can also be set to none in your CSS.

The “V” symbol will flip vertically when you hover over it, if d is supported as a CSS property.

CSS

html,
body,
svg {
  height: 100%;
}

/* This path is displayed on hover*/
#svg_css_ex1:hover path {
  d: path("M20,80 L50,20 L80,80");
}

HTML

<svg id="svg_css_ex1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
  <path fill="none" stroke="red" d="M20,20 L50,80 L80,20" />
</svg>

Result

{{EmbedLiveSample('Modify the value of the SVG path d attribute', '100%', 200)}} 

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN