Zepto.js предоставляет компактный и лёгкий способ работы с DOM,
включая возможности для анимации элементов. Анимация в Zepto основана на
методе .animate(), который позволяет плавно изменять
CSS-свойства элемента за заданное время. В отличие от jQuery, Zepto
использует минимальный набор функций, что делает её более быстрой и
лёгкой, но при этом гибкой для большинства стандартных задач.
Метод .animate() имеет следующий синтаксис:
$(selector).animate(properties, duration, easing, callback);
'fast' (200 мс) и
'slow' (600 мс).'linear' или 'ease-in-out').Можно анимировать любые числовые CSS-свойства, поддерживающие единицы измерения, например:
width,
height — изменение размеров
элементов.opacity — прозрачность.left,
top, right,
bottom — позиционирование.margin,
padding — отступы.Например, анимация изменения ширины блока и прозрачности:
$('#box').animate({
width: '300px',
opacity: 0.5
}, 400, 'ease-in-out', function() {
console.log('Анимация завершена');
});
durationПродолжительность анимации может задаваться числом или строкой. В Zepto стандартные значения:
'fast' — 200 мс'slow' — 600 мсЛюбое число интерпретируется как миллисекунды.
$('#box').animate({height: '200px'}, 1000); // 1 секунда
easing)Zepto поддерживает несколько предустановленных функций сглаживания:
linear — равномерная скорость.ease-in — постепенное ускорение в
начале.ease-out — замедление к концу.ease-in-out — комбинированное
ускорение и замедление.Если easing не указан, используется
'linear'.
$('#box').animate({left: '100px'}, 500, 'ease-out');
Callback-функции позволяют выполнять действия после завершения
анимации. Они передаются как четвёртый аргумент метода
.animate().
$('#box').animate({opacity: 0}, 300, 'linear', function() {
$(this).css('display', 'none');
});
Callback-функция получает в контексте текущий элемент, на который применяется анимация, что удобно для последующих манипуляций с ним.
Для создания цепочек анимаций Zepto использует метод
.animate() в комбинации с колбэками. Каждая следующая
анимация вызывается внутри callback предыдущей:
$('#box').animate({width: '200px'}, 300, function() {
$(this).animate({height: '200px'}, 300);
});
Для удобства можно создавать более сложные цепочки с несколькими шагами, где каждая анимация плавно сменяет предыдущую.
Zepto позволяет задавать относительные изменения свойств через строки
с + или -:
$('#box').animate({left: '+=50px'}, 400); // сдвиг вправо на 50px
$('#box').animate({opacity: '-=0.2'}, 200); // уменьшение прозрачности на 0.2
Это особенно полезно для динамического позиционирования элементов без необходимости предварительно вычислять их текущие значения.
Для остановки текущей анимации используется метод
.stop(). По умолчанию остановка прекращает текущую
анимацию, но оставляет элемент в промежуточном состоянии:
$('#box').stop(); // останавливает текущую анимацию
$('#box').stop(true); // останавливает и завершает анимацию мгновенно
opacity и
transform, поскольку они обычно обрабатываются графическим
ускорением.Zepto предоставляет простой и лаконичный способ управления анимацией, сохраняя гибкость и удобство для динамических интерфейсов, особенно на мобильных устройствах с ограниченными ресурсами.