Spec-Zone.ru › CSS

Свойство CSS `offset`

Базовая поддержка Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна во всех браузерах с сентября 2022 года.

offset — это CSS-свойство короткой записи, которое задаёт все свойства, необходимые для анимации элемента вдоль заданного пути. Свойства смещения в совокупности помогают задать преобразование смещения — преобразование, которое выравнивает точку элемента (offset-anchor) по позиции смещения (offset-position) на пути (offset-path) в различных точках пути (offset-distance) и, при необходимости, поворачивает элемент (offset-rotate) в направлении пути.

Примечание: В ранних версиях спецификации это свойство называлось motion.

Попробуйте

offset: path("M 20 60 L 120 60 L 70 10 L 20 60") 0% auto 90deg;
offset: path(
    "M 20 210 L 74 210 L 118 140 \
 L 62 140 L 20 210"
  )
  20% auto;
<section class="default-example" id="default-example">
  <div class="wrapper">
    <div id="example-element"></div>
  </div>
  <button id="playback" type="button">Play</button>
</section>
#example-element {
  width: 24px;
  height: 24px;
  background: #2bc4a2;
  clip-path: polygon(0% 0%, 70% 0%, 100% 50%, 70% 100%, 0% 100%, 30% 50%);
  animation: distance 3000ms infinite normal ease-in-out;
  animation-play-state: paused;
}

#example-element.running {
  animation-play-state: running;
}

.wrapper {
  height: 220px;
  width: 200px;
  background:
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 140" width="200" height="140"><path d="M 0 60 L 100 60 L 50 10 L 0 60" fill="none" stroke="lightgrey" stroke-width="2" stroke-dasharray="4.5"/></svg>')
      no-repeat,
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -140 150 230" width="200" height="230"><path d="M 0 70 L 56 70 L 98 0 L 42 0 L 0 70" fill="none" stroke="lightgrey" stroke-width="2" stroke-dasharray="4.5"/></svg>');
}

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

#playback {
  position: absolute;
  top: 0;
  left: 0;
  font-size: 1em;
}
const example = document.getElementById("example-element");
const button = document.getElementById("playback");

button.addEventListener("click", () => {
  if (example.classList.contains("running")) {
    example.classList.remove("running");
    button.textContent = "Play";
  } else {
    example.classList.add("running");
    button.textContent = "Pause";
  }
});

Составные свойства

Это свойство является короткой записью для следующих свойств CSS:

  • offset-anchor
  • offset-distance
  • offset-path
  • offset-position
  • offset-rotate

Синтаксис

/* Offset position */
offset: auto;
offset: 10px 30px;
offset: none;

/* Offset path */
offset: ray(45deg closest-side);
offset: path("M 100 100 L 300 100 L 200 300 z");
offset: url("arc.svg");

/* Offset path with distance and/or rotation */
offset: url("circle.svg") 100px;
offset: url("circle.svg") 40%;
offset: url("circle.svg") 30deg;
offset: url("circle.svg") 50px 20deg;

/* Including offset anchor */
offset: ray(45deg closest-side) / 40px 20px;
offset: url("arc.svg") 2cm / 0.5cm 3cm;
offset: url("arc.svg") 30deg / 50px 100px;

/* Global values */
offset: inherit;
offset: initial;
offset: revert;
offset: revert-layer;
offset: unset;

Формальное определение

Начальное значение как у каждого из свойств короткой записи:
  • offset-position
  • offset-path
  • offset-distance
  • offset-anchor
  • offset-rotate
Применяется к трансформируемым элементам
Наследуется нет
Проценты как у каждого из свойств короткой записи:
  • offset-position
  • offset-distance
  • offset-anchor
Вычисленное значение как у каждого из свойств короткой записи:
  • offset-position
  • offset-path
  • offset-distance
  • offset-anchor
  • offset-rotate
Тип анимации как у каждого из свойств короткой записи:
  • offset-position
  • offset-path
  • offset-distance
  • offset-anchor
  • offset-rotate

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

offset = 
  [ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?

Примеры

Анимация элемента вдоль пути

HTML

<div id="offsetElement"></div>

CSS

@keyframes move {
  from {
    offset-distance: 0%;
  }

  to {
    offset-distance: 100%;
  }
}

#offsetElement {
  width: 50px;
  height: 50px;
  background-color: blue;
  offset: path("M 100 100 L 300 100 L 200 300 z") auto;
  animation: move 3s linear infinite;
}

Результат

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

Спецификация
Motion Path Module Level 1
# offset-shorthand

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

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на iOS Samsung Internet WebView для Android WebView на iOS
offset
55
46
79
79
72
42
33
16
55
46
79
42
33
16
6.0
5.0
55
46
16
auto
116
116
122
102
16
116
122
78
16
24.0
116
16
border-box
116
116
122
102
16
116
122
78
16
24.0
116
16
bottom
116
116
122
102
16
116
122
78
16
24.0
116
16
center
116
116
122
102
16
116
122
78
16
24.0
116
16
content-box
116
116
122
102
16
116
122
78
16
24.0
116
16
fill-box
116
116
122
102
16
116
122
78
16
24.0
116
16
left
116
116
122
102
16
116
122
78
16
24.0
116
16
margin-box
Нет
Нет
Нет
Нет
16
Нет
Нет
Нет
16
Нет
Нет
16
none
61
79
72
48
16
61
79
45
16
8.0
61
16
normal
116
116
122
102
17
116
122
78
17
24.0
116
17
padding-box
116
116
122
102
16
116
122
78
16
24.0
116
16
right
116
116
122
102
16
116
122
78
16
24.0
116
16
stroke-box
116
116
122
102
16
116
122
78
16
24.0
116
16
top
116
116
122
102
16
116
122
78
16
24.0
116
16
view-box
116
116
122
102
16
116
122
78
16
24.0
116
16
x-end
Нет
Нет
Нет
Нет
26
Нет
Нет
Нет
26
Нет
Нет
26
x-start
Нет
Нет
Нет
Нет
26
Нет
Нет
Нет
26
Нет
Нет
26
y-end
Нет
Нет
Нет
Нет
26
Нет
Нет
Нет
26
Нет
Нет
26
y-start
Нет
Нет
Нет
Нет
26
Нет
Нет
Нет
26
Нет
Нет
26

См. также

  • offset-anchor
  • offset-distance
  • offset-path
  • offset-position
  • offset-rotate

© 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/Properties/offset

Spec-Zone.ru

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