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
В примере ниже показан эффект различных значений 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 |
См. также
© 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