Урок 42. Справочник: Анимации и переходы: transition и @keyframes

📁 Раздел: Современный CSS ⏱️ Время изучения: ~80 мин 🎯 Сложность: Средняя
#transition #transition-property #transition-duration #transition-timing-function #transition-delay #cubic-bezier #steps #keyframes #animation #animation-name #animation-duration #animation-timing-function #animation-iteration-count #animation-fill-mode #animation-delay #animation-direction #transform #opacity #media

⚡ Кратко

`transition` плавно меняет свойства между состояниями, а `@keyframes` описывает самостоятельную анимацию. Разбираем duration, easing, iteration, fill-mode, производительные `transform`/`opacity` и `prefers-reduced-motion`.

Переходы (transition)

СвойствоЗачем нужноМини-пример
transitionШорткат всех подсвойств: property duration timing-function delaytransition: transform 180ms ease 0s;
transition-propertyЧто анимировать (или all)transition-property: transform, opacity;
transition-durationКак долго (без неё перехода нет)transition-duration: 180ms;
transition-timing-functionКривая скорости (easing)transition-timing-function: ease-in-out;
transition-delayЗадержка перед стартомtransition-delay: 100ms;

Кривые скорости (timing-function)

ЗначениеПоведение
linearПостоянная скорость, механично
easeПо умолчанию: быстрый старт, замедление к концу
ease-inМедленный старт, ускорение
ease-outБыстрый старт, плавное торможение
ease-in-outПлавный старт и плавное торможение
cubic-bezier(a,b,c,d)Своя кривая, можно с «отскоком»
steps(n)Дискретные шаги (для покадровых спрайтов)

Анимации (@keyframes + animation)

СвойствоЗачем нужноМини-пример
@keyframesОписание кадров (from/to или 0%…100%)@keyframes fade-up { from{…} to{…} }
animationШорткат: name duration timing iteration fillanimation: fade-up 500ms ease-out both;
animation-nameИмя keyframesanimation-name: fade-up;
animation-durationДлительность одного циклаanimation-duration: 500ms;
animation-timing-functionКривая скорости анимацииanimation-timing-function: ease-out;
animation-iteration-countЧисло повторов (infinite — цикл)animation-iteration-count: infinite;
animation-fill-modeСтиль до/после анимацииanimation-fill-mode: both;
animation-delayЗадержка перед стартомanimation-delay: 200ms;
animation-directionНаправление (alternate — туда-обратно)animation-direction: alternate;

Производительные свойства для движения

СвойствоЗачем нужноМини-пример
transformДешёвое перемещение/масштаб/поворотtransform: translateY(-4px);
opacityДешёвое появление/исчезаниеopacity: 0;

Доступность

ЗапросЗачем нужен
@media (prefers-reduced-motion: reduce)Уменьшить/отключить движение по системной настройке (урок 38)

Навигация