Spec-Zone.ru › CSS

CSS-функция `path()`

Базовая поддержка Ограниченная доступность

Эта функция не входит в Baseline, поскольку она не работает в некоторых из наиболее широко используемых браузеров.

path() CSS функция принимает строку с SVG-путём и используется в модулях CSS-фигур и CSS-траекторий движения, чтобы создавать фигуры. Функция path() — это значение типа данных <basic-shape>. Её можно использовать в свойствах CSS offset-path и clip-path, а также в атрибуте SVG d.

Использование функции path() имеет некоторые ограничения. Путь должен быть задан в виде одной строки, поэтому создать пользовательский путь с помощью переменных (функций var()) нельзя. Кроме того, все длины в пути неявно задаются в пикселях (pixel) (единицах px); использовать другие единицы нельзя. Функция shape() предоставляет больше возможностей, чем функция path().

Попробуйте

clip-path: path(
  "M  20  240 \
 L  20  80 L 160  80 \
 L 160  20 L 280 100 \
 L 160 180 L 160 120 \
 L  60 120 L  60 240 Z"
);
clip-path: path(
  "M 20 240 \
 C 20 0 300 0 300 240 Z"
);
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element"></div>
</section>
#default-example {
  background: #ffee99;
}

#example-element {
  background: linear-gradient(to bottom right, #ff5522, #0055ff);
  width: 100%;
  height: 100%;
}

Синтаксис

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

/* When used in clip-path only */
path(evenodd,"M 10 80 C 40 10, 65 10, 95 80 S 150 150, 180 80")

Параметры

<fill-rule> Необязательный
Определяет, какие части пути находятся внутри фигуры. Возможные значения:
  • nonzero: точка считается находящейся внутри фигуры, если луч, проведённый из этой точки, пересекает больше сегментов пути слева направо, чем справа налево, в результате чего получается ненулевое значение. Это значение используется по умолчанию, если <fill-rule> не задан.

  • evenodd: точка считается находящейся внутри фигуры, если луч, проведённый из этой точки, пересекает нечётное количество сегментов пути. Это означает, что каждый раз, когда луч входит в фигуру, он не выходит из неё такое же количество раз, то есть число входов без соответствующих выходов нечётное.

Предупреждение: <fill-rule> не поддерживается в свойстве offset-path, и его использование делает свойство недействительным.

<string>
Строка данных data в кавычках, определяющая SVG-путь. Строка данных SVG-пути содержит команды пути, в которых неявно используются пиксельные единицы. Пустой путь считается недействительным.

Возвращаемое значение

Возвращает значение <basic-shape>.

Формальный синтаксис

<path()> = 
  path( <'fill-rule'>? , <string> )

Примеры

Использование функции path() в качестве значения offset-path

В следующем примере функция path() задана в качестве значения свойства offset-path, чтобы создать эллиптическую траекторию, по которой будет двигаться мяч.

<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",
    },
  );
});

Изменение значения атрибута d SVG-пути

С помощью path() можно изменить значение атрибута d SVG, которому также можно присвоить значение none в CSS.

Символ «V» будет переворачиваться по вертикали при наведении курсора, если d поддерживается в качестве свойства CSS.

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>

Результат

Спецификации

Спецификация
Модуль CSS Shapes, уровень 1
# funcdef-basic-shape-path

Совместимость с браузерами

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari в iOS Samsung Internet WebView для Android WebView в iOS
path
52
79
72
39
13.1
10.1
52
79
41
13
10.3
6.0
52
13
10.3
clip-path
88
88
72
74
13.1
10.1
88
79
63
13
10.3
15.0
88
13
10.3
d
52
79
97
60
Нет
52
97
51
Нет
6.0
52
Нет
offset-path
56
79
72
43
16
56
79
43
16
6.0
56
16
shape-outside
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет

См. также

  • border-shape, shape-outside
  • Модуль CSS-фигур
  • Обзор CSS-фигур
  • Синтаксис path SVG: иллюстрированное руководство на CSS-tricks (2021)

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/basic-shape/path

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API