Easing-функции определяют, как изменяется значение свойства
во времени при анимации. В Dom7 они применяются для плавного
перехода элементов между состояниями, создавая эффект ускорения,
замедления или сочетания этих эффектов. В JavaScript это достигается с
помощью функции animate с параметром
easing.
Dom7 не содержит встроенного набора всех easing-функций как CSS, но поддерживает передачу строковых идентификаторов, совместимых с CSS или сторонними библиотеками, а также собственных функций, описанных через математические формулы.
Линейное (linear)
$('.box').animate(
{ translateX: 200 },
1000,
'linear'
);Ускорение и замедление (ease-in,
ease-out, ease-in-out)
ease-in: движение начинается медленно
и ускоряется.ease-out: движение начинается быстро и
замедляется.ease-in-out: комбинация ускорения и
замедления, создающая плавный эффект “разгона и торможения”.$('.box').animate(
{ translateY: 150 },
800,
'ease-in-out'
);Кубические кривые
(cubic-bezier)
(x1, y1, x2, y2).$('.box').animate(
{ opacity: 0 },
600,
'cubic-bezier(0.25, 0.1, 0.25, 1.0)'
);Dom7 позволяет передавать функцию, которая принимает
один параметр progress (от 0 до 1) и возвращает значение
модификации свойства в текущий момент времени:
function customEase(progress) {
return progress < 0.5
? 4 * progress * progress * progress
: 1 - Math.pow(-2 * progress + 2, 3) / 2;
}
$('.box').animate(
{ scale: 1.5 },
1200,
customEase
);
progress = 0 соответствует началу
анимации, progress = 1 — её
концу.Комбинирование нескольких анимаций с разными easing
$('.box')
.animate({ translateX: 100 }, 500, 'ease-in')
.animate({ translateY: 50 }, 700, 'ease-out');Синхронизация с временными функциями
Создание эффектов “подпрыгивания”
ease-out и пользовательских
функций с отрицательными значениями.function bounce(progress) {
return Math.abs(Math.sin(6.28 * progress) * (1 - progress));
}
$('.box').animate({ translateY: 100 }, 1000, bounce);requestAnimationFrame, чтобы не снижать FPS.linear, ease-in, ease-out,
ease-in-out.cubic-bezier могут быть использованы
напрямую.Easing-функции в Dom7 — это мощный инструмент для создания динамичных и выразительных интерфейсов. Основное внимание уделяется:
Правильное понимание и грамотное применение easing позволяет создавать интерфейсы, которые ощущаются естественными и отзывчивыми, без лишней «рваности» или резких изменений состояния элементов.