Spec-Zone.ru › CSS

animation-composition

Baseline 2023

Новое

С июля 2023 года эта функция работает на последних версиях устройств и браузеров. Возможно, она не будет работать на более старых устройствах или браузерах.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Свойство animation-composition CSS задаёт операцию композиции, используемую, когда несколько анимаций одновременно влияют на одно и то же свойство.

Синтаксис

/* Single animation */
animation-composition: replace;
animation-composition: add;
animation-composition: accumulate;

/* Multiple animations */
animation-composition: replace, add;
animation-composition: add, accumulate;
animation-composition: replace, add, accumulate;

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

Примечание: Когда вы задаёте несколько значений, разделённых запятыми, для свойства animation-*, они применяются к анимациям в порядке, в котором появляются animation-names. Если количество анимаций и композиций отличается, значения, указанные в свойстве animation-composition, циклически переходят от первого к последнему animation-name, повторяясь до тех пор, пока всем анимациям не будет присвоено значение animation-composition. Подробнее см. Установка нескольких значений свойств анимации.

Значения

replace

Значение эффекта перезаписывает базовое значение свойства. Это значение по умолчанию.

add

Значение эффекта строится на базовом значении свойства. Эта операция создаёт аддитивный эффект. Для типов анимаций, где операция сложения не коммутативна, порядок операндов — базовое значение, а затем значение эффекта.

accumulate

Значение эффекта и базовое значение объединяются. Для типов анимаций, где операция сложения не коммутативна, порядок операндов — базовое значение, а затем значение эффекта.

Описание

Каждое свойство, на которое ссылается правило @keyframes, связано со стеком эффектов. Значение стека эффектов вычисляется путём объединения базового значения свойства в правиле CSS со стилем значением эффекта этого свойства в ключевой кадр. Свойство animation-composition помогает указать, как объединить базовое значение с значением эффекта.

Например, в CSS ниже blur(5px) — это базовое значение, а blur(10px) — значение эффекта. Свойство animation-composition задаёт операцию для получения конечного значения эффекта после композиции эффекта базового значения и значения эффекта.

.icon:hover {
  filter: blur(5px);
  animation: 3s infinite pulse;
  animation-composition: add;
}

@keyframes pulse {
  0% {
    filter: blur(10px);
  }
  100% {
    filter: blur(20px);
  }
}

Рассмотрим разные значения для свойства animation-composition в приведённом выше примере. Конечное значение эффекта в каждом из этих случаев будет вычисляться, как описано ниже:

  • С помощью replace, blur(10px) заменит blur(5px) в ключевом кадре 0%. Это поведение свойства по умолчанию.
  • С помощью add, составное значение эффекта в ключевом кадре 0% будет blur(5px) blur(10px).
  • С помощью accumulate, составное значение эффекта в ключевом кадре 0% будет blur(15px).

Примечание: Операция композиции также может быть указана в ключевом кадре. В этом случае указанная операция композиции используется для каждого свойства сначала внутри этого ключевого кадра, а затем для каждого свойства в следующем ключевом кадре.

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

Начальное значение replace
Применимо к всем элементам
Наследуется нет
Вычисленное значение как указано
Тип анимации Не анимируемое

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

animation-composition = 
<single-animation-composition>#

<single-animation-composition> =
replace |
add |
accumulate

Примеры

Понимание значений animation-composition

В примере ниже показан эффект различных значений animation-composition рядом друг с другом.

HTML

<div class="container">
  replace
  <div id="replace" class="target"></div>
</div>
<div class="container">
  add
  <div id="add" class="target"></div>
</div>
<div class="container">
  accumulate
  <div id="accumulate" class="target"></div>
</div>

CSS

Здесь базовое значение — translateX(50px) rotate(45deg).

@keyframes slide {
  20%,
  40% {
    transform: translateX(100px);
    background: yellow;
  }
  80%,
  100% {
    transform: translateX(150px);
    background: orange;
  }
}

.target {
  transform: translateX(30px) rotate(45deg);
  animation: slide 5s linear infinite;
}
.target:hover {
  animation-play-state: paused;
}
#replace {
  animation-composition: replace;
}
#add {
  animation-composition: add;
}
#accumulate {
  animation-composition: accumulate;
}

Результат

  • С replace, конечное значение эффекта для свойства transform в ключевом кадре 0%, 20% составляет translateX(100px) (полностью заменяя базовое значение translateX(30px) rotate(45deg)). В данном случае элемент вращается от 45 градусов до 0 градусов по мере анимации от значения по умолчанию, установленного для элемента, до значения без вращения, установленного в метке 0%. Это поведение по умолчанию.
  • С add, конечное значение эффекта для свойства transform в ключевом кадре 0%, 20% составляет translateX(30px) rotate(45deg) и translateX(100px). Таким образом, элемент смещается 30px вправо, поворачивается на 45deg, а затем смещается ещё на 100px вдоль перенаправленной оси X.
  • С accumulate, конечное значение эффекта в ключевом кадре 0%, 20% составляет translateX(130px) rotate(45deg). Это означает, что два значения смещения по оси X — 30px и 100px — объединяются или "накапливаются".

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

Спецификация
CSS Анимации Уровень 2
# animation-composition

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

Рабочий стол Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
animation-composition 112 112 115 98 16 112 115 75 16 23.0 112

См. также

  • Использование CSS-анимаций
  • Свойство композиции KeyFrameEffect
  • Другие связанные свойства анимации: animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timeline, animation-timing-function

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/animation-composition

Spec-Zone.ru

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