<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[animation-composition теперь работает везде: контроль CSS-анимаций без JS]]></title><description><![CDATA[<p dir="auto">CSS-свойство <strong>animation-composition</strong> наконец-то поддерживается во всех браузерах. Оно позволяет накладывать несколько анимаций на одно свойство, не заменяя их друг друга. Теперь сложные эффекты кнопок, градиентов и фильтров создаются чистым CSS - без JavaScript.</p>
<p dir="auto">Это решает проблему перезаписи анимаций. Раньше при hover или фокусе новая анимация стирала старую. С animation-composition эффекты складываются, как слои в Photoshop. Полезно для UI-элементов: кнопки оживают, градиенты крутятся бесконечно, а hover добавляет акцент - всё гладко и производительно.</p>
<h2>Как работает animation-composition</h2>
<p dir="auto">Свойство <strong>animation-composition</strong> определяет, как браузер сочетает несколько анимаций на одном свойстве. По умолчанию режим <em>replace</em> - новая анимация полностью заменяет предыдущую. Но есть <strong>add</strong> и <strong>accumulate</strong>, которые позволяют суммировать эффекты.</p>
<p dir="auto">Представьте кнопку с постоянной анимацией вращения градиента. При hover добавляется сдвиг угла - без JS. Браузер просто накладывает вторую анимацию поверх первой. Это работает для transform, filter, background и даже цветов. Поддержка появилась в 2025-2026 годах, и теперь Chrome, Firefox, Safari на равных.</p>
<p dir="auto">В реальном примере: conic-gradient крутится бесконечно, hover ускоряет его. Без composition вторая анимация убивает первую. С <strong>add</strong> они складываются - GPU не нагружается, мобильные устройства не страдают от лагов. Логично перейти к значениям свойства.</p>
<ul>
<li><strong>replace</strong>: Новая анимация перезаписывает старую (по умолчанию). Подходит для простых случаев, где не нужен стек эффектов.</li>
<li><strong>add</strong>: Эффекты суммируются с базовым значением. Идеально для transform и filter - например, поворот + размытие.</li>
<li><strong>accumulate</strong>: Анимации складываются друг с другом. Полезно для нескольких слоёв, как градиент + свечение.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Режим</th>
<th>Описание</th>
<th>Пример эффекта</th>
</tr>
</thead>
<tbody>
<tr>
<td>replace</td>
<td>Замена</td>
<td>Hover стирает spin</td>
</tr>
<tr>
<td>add</td>
<td>Сумма с базой</td>
<td>Spin + hover-shift</td>
</tr>
<tr>
<td>accumulate</td>
<td>Сумма анимаций</td>
<td>Несколько градиентов слоями</td>
</tr>
</tbody>
</table>
<h2>Практические примеры наложения анимаций</h2>
<p dir="auto">Возьмём кнопку с коническим градиентом, который вращается по часовой стрелке. CSS-анимация на angle градиента бесконечная. При hover запускается вторая анимация - смещение угла для блика. Без composition hover прерывает вращение.</p>
<p dir="auto">С <strong>animation-composition: add</strong> браузер добавляет вторую анимацию к первой. Результат: градиент вертится, а hover накладывает вспышку. Это использует custom properties для динамики - --angle: 0deg, анимация меняет его. Производительность на высоте, так как анимации паузированы до взаимодействия.</p>
<p dir="auto">Ещё пример с фильтрами: иконка с постоянным pulse (размытие от 10px до 20px). Hover добавляет blur(5px). В replace-режиме pulse исчезает, в add - суммируется. Реальные кнопки в UI получают глубину без JS-слушателей. Теперь разберём код.</p>
<pre><code class="language-css">button {
  background: conic-gradient(from var(--angle), yellow, orange);
  animation: spin 10s linear infinite;
  animation-composition: add;
}

button:hover {
  animation: shift 0.5s ease;
  animation-composition: add;
}

@keyframes spin { to { --angle: 360deg; } }
@keyframes shift { 50% { --angle: 180deg; } }
</code></pre>
<ul>
<li>Используйте для кнопок: бесконечный фон + hover-эффект.</li>
<li>Для иконок: базовый glow + интерактивный blur.</li>
<li><em>Нюанс</em>: Работает с logical properties для RTL-языков.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Сценарий</th>
<th>Без composition</th>
<th>С add/accumulate</th>
</tr>
</thead>
<tbody>
<tr>
<td>Кнопка hover</td>
<td>Анимация сбрасывается</td>
<td>Эффектыются</td>
</tr>
<tr>
<td>Множественные градиенты</td>
<td>Только последний</td>
<td>Все слои видны</td>
</tr>
<tr>
<td>Filter pulse</td>
<td>Hover ломает цикл</td>
<td>Сумма blur-уровней</td>
</tr>
</tbody>
</table>
<h2>Сравнение с JavaScript-решениями</h2>
<p dir="auto">Раньше для стека анимаций использовали JS: event listeners, requestAnimationFrame или библиотеки вроде GSAP. Это добавляло вес, лагало на мобильных и требовало отладки. <strong>animation-composition</strong> упрощает: один CSS-класс управляет всем.</p>
<p dir="auto">В примере с видео: кнопка с градиентами, pseudo-элементами и hover - 100% CSS. JS заменили на composition: add. Результат чище, быстрее рендерится. Поддержка в 2026 году полная - забудьте полифиллы. Но учтите: для сложной логики JS всё равно нужен.</p>
<p dir="auto">Сравним производительность: CSS-анимации на GPU, JS - на CPU. Composition добавляет zero overhead. Реальные кейсы - анимированные бордеры без SVG, staggered эффекты без циклов. Логично к преимуществам.</p>
<ul>
<li><strong>Производительность</strong>: Меньше нагрузки, пауза до hover.</li>
<li><strong>Простота</strong>: Нет кода, только CSS.</li>
<li><strong>Кросс-браузер</strong>: Теперь везде.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Подход</th>
<th>Вес</th>
<th>Сложность</th>
<th>GPU-поддержка</th>
</tr>
</thead>
<tbody>
<tr>
<td>JavaScript</td>
<td>Высокий</td>
<td>Средняя</td>
<td>Нет</td>
</tr>
<tr>
<td>CSS + composition</td>
<td>Низкий</td>
<td>Низкая</td>
<td>Да</td>
</tr>
</tbody>
</table>
<h2>Новые горизонты для CSS-анимаций</h2>
<p dir="auto">Свойство открывает двери для scroll-driven анимаций и sibling-based эффектов, но фокус на composition. Осталось экспериментировать с цветами: анимации rgb суммируются в неожиданные оттенки. Подумать стоит над комбо с @property для сверхгладких переходов.</p>
<p dir="auto">В 2026 CSS догоняет JS по мощи. Кнопки, меню, градиенты - всё без скриптов. За кадром комбинации с view() timeline, но базовое освоение даст преимущество в UI.</p>
]]></description><link>https://forum.exlends.ru/topic/1216/animation-composition-teper-rabotaet-vezde-kontrol-css-animacij-bez-js</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 02:56:14 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1216.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Mar 2026 09:48:58 GMT</pubDate><ttl>60</ttl></channel></rss>