Анимации и transitions

↑ 1.3 CSS и SASS · ← Предыдущая · → Следующая

Желательно~3 мин чтенияУровень: junior

Зачем это на собесе

Ждут знания, какие свойства анимировать дёшево (transform, opacity) и почему.

Объяснение

Transition — плавный переход между состояниями; Animation — сценарий на @keyframes.

.btn { transition: transform .2s ease, background-color .2s ease; }
.btn:hover { transform: translateY(-2px); background-color: var(--accent); }
 
@keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }
.badge { animation: pulse 1.5s ease-in-out infinite; }
.fade-in { animation: fade .3s ease both; }   /* both: сохранить начальное/конечное состояние */
ПараметрЗначения
transition-propertyкакие свойства
transition-duration, animation-durationдлительность
timing-functionease, linear, ease-in-out, cubic-bezier(), steps()
delay, iteration-count, direction, fill-modeзадержка, повторы, направление, состояние

Производительность: браузер выполняет transform и opacity на композиторе (GPU) без layout/paint; анимация width, top, margin, box-shadow вызывает reflow/repaint и «лаги».

Пайплайн рендера: Layout → Paint → Composite. Стремитесь к Composite-only анимациям.

Подсказка will-change: transform — точечно и временно. Уважайте prefers-reduced-motion.

JS-анимации: Web Animations API (el.animate()), requestAnimationFrame; библиотеки (GSAP). Во Vue — <Transition>/<TransitionGroup>.

Нюансы и подводные камни

  • display: none нельзя плавно анимировать обычным transition (используйте opacity + visibility или @starting-style/allow-discrete).
  • will-change на всё подряд расходует память.
  • Анимации не должны мешать доступности (мигание > 3 раз в секунду опасно).
  • Transition срабатывает только при изменении значения между двумя состояниями.

Практика

  1. Сравните анимации left и transform: translateX в Performance.
  2. Сделайте плавное появление модального окна с opacity/transform.
  3. Отключите анимации при prefers-reduced-motion.

Вопросы с ответами

Связанные темы