Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Фронтенд
  4. animation-composition теперь работает везде: контроль CSS-анимаций без JS

animation-composition теперь работает везде: контроль CSS-анимаций без JS

Запланировано Прикреплена Закрыта Перенесена Фронтенд
cssanimation-compositioбез javascript
1 Сообщения 1 Постеры 67 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • hannadevH Не в сети
    hannadevH Не в сети
    hannadev
    написал в отредактировано
    #1

    CSS-свойство animation-composition наконец-то поддерживается во всех браузерах. Оно позволяет накладывать несколько анимаций на одно свойство, не заменяя их друг друга. Теперь сложные эффекты кнопок, градиентов и фильтров создаются чистым CSS - без JavaScript.

    Это решает проблему перезаписи анимаций. Раньше при hover или фокусе новая анимация стирала старую. С animation-composition эффекты складываются, как слои в Photoshop. Полезно для UI-элементов: кнопки оживают, градиенты крутятся бесконечно, а hover добавляет акцент - всё гладко и производительно.

    Как работает animation-composition

    Свойство animation-composition определяет, как браузер сочетает несколько анимаций на одном свойстве. По умолчанию режим replace - новая анимация полностью заменяет предыдущую. Но есть add и accumulate, которые позволяют суммировать эффекты.

    Представьте кнопку с постоянной анимацией вращения градиента. При hover добавляется сдвиг угла - без JS. Браузер просто накладывает вторую анимацию поверх первой. Это работает для transform, filter, background и даже цветов. Поддержка появилась в 2025-2026 годах, и теперь Chrome, Firefox, Safari на равных.

    В реальном примере: conic-gradient крутится бесконечно, hover ускоряет его. Без composition вторая анимация убивает первую. С add они складываются - GPU не нагружается, мобильные устройства не страдают от лагов. Логично перейти к значениям свойства.

    • replace: Новая анимация перезаписывает старую (по умолчанию). Подходит для простых случаев, где не нужен стек эффектов.
    • add: Эффекты суммируются с базовым значением. Идеально для transform и filter - например, поворот + размытие.
    • accumulate: Анимации складываются друг с другом. Полезно для нескольких слоёв, как градиент + свечение.
    Режим Описание Пример эффекта
    replace Замена Hover стирает spin
    add Сумма с базой Spin + hover-shift
    accumulate Сумма анимаций Несколько градиентов слоями

    Практические примеры наложения анимаций

    Возьмём кнопку с коническим градиентом, который вращается по часовой стрелке. CSS-анимация на angle градиента бесконечная. При hover запускается вторая анимация - смещение угла для блика. Без composition hover прерывает вращение.

    С animation-composition: add браузер добавляет вторую анимацию к первой. Результат: градиент вертится, а hover накладывает вспышку. Это использует custom properties для динамики - --angle: 0deg, анимация меняет его. Производительность на высоте, так как анимации паузированы до взаимодействия.

    Ещё пример с фильтрами: иконка с постоянным pulse (размытие от 10px до 20px). Hover добавляет blur(5px). В replace-режиме pulse исчезает, в add - суммируется. Реальные кнопки в UI получают глубину без JS-слушателей. Теперь разберём код.

    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; } }
    
    • Используйте для кнопок: бесконечный фон + hover-эффект.
    • Для иконок: базовый glow + интерактивный blur.
    • Нюанс: Работает с logical properties для RTL-языков.
    Сценарий Без composition С add/accumulate
    Кнопка hover Анимация сбрасывается Эффектыются
    Множественные градиенты Только последний Все слои видны
    Filter pulse Hover ломает цикл Сумма blur-уровней

    Сравнение с JavaScript-решениями

    Раньше для стека анимаций использовали JS: event listeners, requestAnimationFrame или библиотеки вроде GSAP. Это добавляло вес, лагало на мобильных и требовало отладки. animation-composition упрощает: один CSS-класс управляет всем.

    В примере с видео: кнопка с градиентами, pseudo-элементами и hover - 100% CSS. JS заменили на composition: add. Результат чище, быстрее рендерится. Поддержка в 2026 году полная - забудьте полифиллы. Но учтите: для сложной логики JS всё равно нужен.

    Сравним производительность: CSS-анимации на GPU, JS - на CPU. Composition добавляет zero overhead. Реальные кейсы - анимированные бордеры без SVG, staggered эффекты без циклов. Логично к преимуществам.

    • Производительность: Меньше нагрузки, пауза до hover.
    • Простота: Нет кода, только CSS.
    • Кросс-браузер: Теперь везде.
    Подход Вес Сложность GPU-поддержка
    JavaScript Высокий Средняя Нет
    CSS + composition Низкий Низкая Да

    Новые горизонты для CSS-анимаций

    Свойство открывает двери для scroll-driven анимаций и sibling-based эффектов, но фокус на composition. Осталось экспериментировать с цветами: анимации rgb суммируются в неожиданные оттенки. Подумать стоит над комбо с @property для сверхгладких переходов.

    В 2026 CSS догоняет JS по мощи. Кнопки, меню, градиенты - всё без скриптов. За кадром комбинации с view() timeline, но базовое освоение даст преимущество в UI.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы