HTML\CSS → Плавные переходы transitions

Плавные переходы transitions позволяют изменять значения свойств постепенно. С помощью transitions можно управлять только переходом между двумя состояниями: начальным и конечным, в оличие от анимаций. Задаются обычно у базового класса (например .btn), а не у изменяющего состояние (например .btn-active), чтобы переходы происходили плавно в обе стороны.

Свойство transition позволяет изменять состояния объекта плавно (с использованием анимации).

transition: transform 0.5s ease; /* сокращенная форма записи */

Свойство transition-duration указывает длительность перехода, задается в s (секундах) или ms (милисекундах).

transition-duration: 10s;
transition-duration: 0.1s;
transition-duration: 100ms;

По умолчанию плавный переход действует на все анимируемые свойства элемента.

Свойство transition-property указывает какие свойстваизменять плавно. Значения:
all — все свойства (по умолчанию);
width — плавно меняется только ширина;
width, height — плавно меняется ширина и высота;
transform — плавно происходит трасформация.
и т.д.

transition-property: width, height, transform;
transition-duration: 1s, 0.5s, 100ms;

Свойство transition-delay определяет задержку перед началом перехода и задается в секундах или миллисекундах.

transition-delay: 200ms;

Свойство transition-timing-function определяет с какой скоростью и ускорением будут меняться свойства во время перехода (“функция” или “форма”). Значения:
ease — переход начинается медленно, затем ускоряется и к концу движения опять замедляется (по умолчанию);
linear — переход равномерным, без ускорений и замедлений;
ease-in— переход медленно начинается, а к концу ускоряется;
ease-out — переход начинается быстро, а к концу замедляется;
ease-in-out — переход начинается и заканчивается медленно, но происходит это интенсивнее (похоже на ease).
Значение также можно задать с помощью функции cubic-bezier(кубических кривых Безье). А также с помощью steps — «ступенек», по которым будет идти переход. steps принимает в аргументах число_шагов и направление. При заданном направлеии start — первый шаг выполняется одновременно с началом перехода, а в случае c end — последний шаг будет выполнен вместе с завершением перехода.

transition-timing-function: linear;
transition-timing-function: cubic-bezier(0.42, 0, 1, 1); // аналог ease
transition-timing-function: steps(5, start);

Переход можно записать в сокращенном виде свойством transition. Параметры перехода просто перечисляются через пробел: свойство, длительность, форма и задержка.

transition: transform 1s ease 100ms;