Кратко
СкопированоПри помощи свойства animation можно задать, как будет развиваться анимация между ключевыми кадрами: равномерно, или сначала быстро, потом медленно, или по каким-то сложным внутренним законам.
Пример
Скопировано
.element { animation-name: circle-to-square; animation-duration: 2s; animation-iteration-count: infinite; animation-direction: alternate; animation-timing-function: ease-in;}
.element {
animation-name: circle-to-square;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: ease-in;
}
Как понять
СкопированоАнимации пришли в веб в попытке стереть границу между реальным миром и компьютерным. В реальном мире вещи не меняют свои свойства мгновенно. Мячик перемещается из вашей руки на пол не моментально, а плавно меняя свою позицию в пространстве.
CSS-анимации по умолчанию проигрываются линейно, меняя свойства элемента на равные доли в равные промежутки времени. Такое поведение редко встречается в реальной жизни. Тот же мячик начинает своё движение медленно и со временем ускоряется.
Как пишется
Скопированоlinear
СкопированоАнимация проигрывается равномерно, без колебаний скорости.
ease
СкопированоАнимация начинается медленно, затем быстро разгоняется и снова замедляется к концу. Значение по умолчанию.
ease-in
СкопированоАнимация начинается медленно и плавно ускоряется к концу.
ease-out
СкопированоАнимация начинается быстро и плавно замедляется к концу.
ease-in-out
СкопированоАнимация начинается и заканчивается медленно, ускоряясь в середине.
cubic-bezier(x1, y1, x2, y2)
СкопированоВременная функция, описывающая тип ускорения в виде кривой Безье.

По оси x располагается временная шкала анимации, а по оси y — прогресс анимации. Это очень мощный инструмент для создания разнообразных анимаций со сложными внутренними законами.
Значения x1 и x3 должны находиться в диапазоне от 0 до 1 включительно. Задавая значения x2 и x4 меньше 0 или больше 1, можно добиться эффекта пружины.
Редко когда разработчики пишут эту функцию из головы. Чаще всего используется инструмент визуализации, позволяющий изменять значения и сразу видеть, как будет выглядеть анимация.
Один из самых популярных инструментов — cubic-bezier.com.
step-start
СкопированоЗадаёт пошаговую анимацию, разбивая её на отрезки, изменения происходят в начале каждого шага.
step-end
СкопированоПошаговая анимация, изменения происходят в конце каждого шага.
steps(количество шагов, положение шага)
СкопированоФункция, указывающая, что анимация должна воспроизводиться шагами, резко переходя от одного состояния к другому.
Первый параметр указывает, на сколько отрезков нужно разбить анимацию. Значением должно быть целое положительное число больше 0.
Второй параметр является необязательным и указывает позицию шага, момент, когда начинается анимация. Возможные значения:
jump— первый шаг происходит при значении- start 0.jump— последний шаг происходит при значении- end 1.jump— все шаги происходят в пределах от- none 0до1включительно.jump— первый шаг происходит при значении- both 0, последний — при значении1.start— ведёт себя какjump.- start end— ведёт себя какjump.- end
Со значением start анимация начинается в начале каждого шага, со значением end — в конце каждого шага с задержкой. Задержка вычисляется как результат деления времени анимации на количество шагов. Если второй параметр не указан, используется значение по умолчанию end.
Очень сложно представить, как же будет выглядеть анимация при каждом из этих значений. Гораздо информативнее будет демка: