intermediate

Анимации и transitions

Анимируйте смену состояний через transitions, keyframes, easing, fill modes, reduced motion и compositor-friendly свойства.

Transitions интерполируют значения свойств при смене состояния; animations проигрывают keyframes во времени. Оба должны передавать состояние, оставаться отзывчивыми и уважать настройки пользователя.

					.dialog {
  transition: opacity 200ms ease, transform 200ms ease;
}
.dialog[data-open="true"] {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .dialog { transition: none; }
}
				

Compositor-friendly свойства (`transform`, `opacity`) обычно обходят layout. Анимация `width`, `height`, `top` или `margin` запускает layout и может давать jank.

На интервью: триггеры transition, timing keyframes, reduced motion и стоимость layout-анимаций в pipeline.

Компромисс: выразительный motion против производительности и доступности при анимации layout-свойств.

Типовые ошибки: motion без смысла; layout-анимации на больших списках; нет fallback для reduced motion.

Чеклист:

  • Анимируйте осмысленные смены состояния.
  • Учитывайте prefers-reduced-motion.
  • Предпочитайте transform и opacity.
  • Профилируйте keyframes до оптимизации.