Кратко
СкопированоПри помощи свойства 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
.
Очень сложно представить, как же будет выглядеть анимация при каждом из этих значений. Гораздо информативнее будет демка: