«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как перезапустить анимацию CSS3 с помощью Reflow?

Как перезапустить анимацию CSS3 с помощью Reflow?

Опубликовано 15 ноября 2024 г.
Просматривать:901

How to Restart CSS3 Animations with Reflow?

Перезапуск анимации CSS3

Возобновление анимации CSS3 при взаимодействии с пользователем — распространенная задача. Хотя удаление и повторная вставка анимированного элемента может показаться эффективным, оно вносит ненужную сложность. Более совершенное решение возникает за счет использования возможностей перекомпоновки для плавного сброса анимации.

Перекомпоновка, процесс переформатирования и перерисовки структуры документа, предоставляет удобный механизм для изменения стилей без нарушения временной шкалы анимации. Кратковременно установив для свойства анимации значение «none», а затем запустив перекомпоновку, браузер получает сигнал игнорировать любую выполняемую анимацию. Это позволяет последующим изменениям стиля немедленно вступить в силу, фактически перезапуская анимацию.

Для иллюстрации рассмотрим следующий фрагмент JavaScript:

function reset_animation() {
  var el = document.getElementById('animated');
  el.style.animation = 'none';
  el.offsetHeight; /* trigger reflow */
  el.style.animation = null; 
}

При срабатывании эта функция приостанавливает анимацию «анимированного» элемента, принудительно перерисовывает браузер, а затем восстанавливает свойство анимации в исходное состояние. Избегая задержек или цепочек назначений анимации, этот подход упрощает процесс сброса анимации, обеспечивая плавное визуальное восприятие.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3