Булево значение, указывающее, следует ли помещать анимацию в очередь эффектов. Если false, анимация начнется немедленно. Начиная с jQuery 1.7, параметр queue также может принимать строку, в этом случае анимация добавляется в очередь, представленную этой строкой. При использовании имени пользовательской очереди анимация автоматически не запускается; вы должны вызвать .dequeue("queuename") для ее запуска.
Объект, содержащий одно или несколько свойств CSS, определенных аргументом properties, и соответствующие функции плавного изменения. (версия добавлена: 1.4)
Функция, которая вызывается для каждого анимированного свойства каждого анимированного элемента. Эта функция предоставляет возможность изменить объект Tween, чтобы изменить значение свойства перед его установкой.
Функция, вызываемая после каждого шага анимации, только один раз на каждый анимированный элемент независимо от количества анимированных свойств. (версия добавлена: 1.8)
Функция, вызываемая при завершении или остановке анимации элемента без завершения (объект Promise либо разрешен, либо отклонен). (версия добавлена: 1.8)
Метод .animate() позволяет нам создавать эффекты анимации для любых числовых свойств CSS. Единственным обязательным параметром является обычный объект свойств CSS. Этот объект похож на тот, который можно передать методу .css(), за исключением того, что диапазон свойств более ограничен.
Свойства и значения анимации
Все анимируемые свойства должны быть анимированы до единственного числового значения, за исключением случаев, указанных ниже; большинство свойств, которые не являются числовыми, не могут быть анимированы с помощью базовой функциональности jQuery (например, width, height, или left можно анимировать, но background-color — нет, если не используется плагин jQuery.Color). Значения свойств обрабатываются как число пикселей, если не указано иное. Единицы em и % могут быть указаны, где это применимо.
Помимо свойств стиля, некоторые нестилевые свойства, такие как scrollTop и scrollLeft, а также пользовательские свойства, могут быть анимированы.
Сокращенные свойства CSS (например, шрифт, фон, граница) не полностью поддерживаются. Например, если вы хотите анимировать ширину отрисованной границы, предварительно необходимо установить, по крайней мере, стиль границы и ширину границы, отличную от "auto". Или, если вы хотите анимировать размер шрифта, вы должны использовать fontSize или эквивалент в CSS 'font-size' вместо просто 'font'.
В дополнение к числовым значениям каждое свойство может принимать строки 'show', 'hide', и 'toggle'. Эти сокращения позволяют создавать пользовательские анимации скрытия и отображения, которые учитывают тип отображения элемента. Для использования встроенного отслеживания состояния переключения jQuery, ключевое слово 'toggle' должно последовательно задаваться как значение анимируемого свойства.
Анимируемые свойства также могут быть относительными. Если значение задается с префиксом += или -=, то целевое значение вычисляется путем добавления или вычитания заданного числа из текущего значения свойства.
Примечание: В отличие от сокращенных методов анимации, таких как .slideDown() и .fadeIn(), метод .animate()не делает скрытые элементы видимыми в рамках эффекта. Например, при $( "someElement" ).hide().animate({height: "20px"}, 500), анимация будет выполняться, но элемент останется скрытым.
Продолжительность
Продолжительности задаются в миллисекундах; более высокие значения указывают на более медленную анимацию, а не на более быструю. По умолчанию продолжительность составляет 400 миллисекунд. Строки 'fast' и 'slow' можно использовать для обозначения продолжительности 200 и 600 миллисекунд соответственно.
Обратные функции
Если заданы, обратные функции start, step, progress, complete, done, fail, и always вызываются на основе каждого элемента; this устанавливается на анимируемый элемент DOM. Если элементов нет в наборе, обратные функции не вызываются. Если анимируется несколько элементов, обратная функция выполняется один раз для каждого сопоставленного элемента, а не один раз для всей анимации. Используйте метод .promise() для получения промиса, к которому можно присоединить обратные функции, которые срабатывают один раз для набора анимированных элементов любого размера, включая ноль элементов.
Основное использование
Для анимации любого элемента, например, простого изображения:
Обратите внимание, что целевое значение свойства height равно 'toggle'. Поскольку изображение было видимым до этого, анимация уменьшает высоту до 0, чтобы скрыть его. Второй щелчок затем обращает этот переход:
Значение opacity изображения уже соответствует целевому значению, поэтому это свойство не анимируется при втором щелчке. Поскольку целевое значение для left является относительным значением, изображение смещается еще дальше вправо во время этой второй анимации.
Направляющие свойства (top, right, bottom, left) не оказывают заметного эффекта на элементы, если их свойство стиля position равно static, что по умолчанию верно.
Примечание: Проект jQuery UI расширяет метод .animate() путём возможности анимации некоторых нечисловых стилей, таких как цвета. Проект также включает механизмы для указания анимаций через классы CSS, а не отдельные атрибуты.
Примечание: если вы пытаетесь анимировать элемент с высотой или шириной 0 пикселей, где содержимое элемента видно из-за переполнения, jQuery может обрезать это переполнение во время анимации. Однако, фиксируя размеры исходного элемента, который скрывается, можно гарантировать, что анимация будет работать плавно. Для автоматической фиксации размеров вашего основного элемента без ручного задания можно использовать clearfix.
Функция шага
Вторая версия .animate() предоставляет опцию step — функцию обратного вызова, которая срабатывает на каждом шаге анимации. Эта функция полезна для включения пользовательских типов анимации или изменения анимации по мере ее выполнения. Она принимает два аргумента (now и fx), и this устанавливается на анимируемый элемент DOM.
now: числовое значение анимируемого свойства на каждом шаге
fx: ссылка на прототип объекта jQuery.fx, который содержит ряд свойств, таких как elem для анимируемого элемента, start и end для начального и конечного значений анимируемого свойства соответственно, и prop для анимируемого свойства.
Обратите внимание, что функция step вызывается для каждого анимируемого свойства на каждом анимируемом элементе. Например, для двух элементов списка функция step срабатывает четыре раза на каждом шаге анимации:
$( "li" ).animate({
opacity: .5,
height: "50%"
}, {
step: function( now, fx ) {
var data = fx.elem.id + " " + fx.prop + ": " + now;
$( "body" ).append( "<div>" + data + "</div>" );
}
});
Ускорение
Остальным параметром .animate() является строка, называющая функцию ускорения, которую нужно использовать. Функция ускорения задает скорость, с которой анимация продвигается в разные моменты анимации. В библиотеке jQuery реализованы только две функции ускорения: по умолчанию, называемая swing, и функция с постоянной скоростью, называемая linear. Больше функций ускорения доступны с использованием плагинов, в частности, пакета jQuery UI.
Ускорение по каждому свойству
Начиная с версии jQuery 1.4, вы можете задавать функции ускорения по каждому свойству в одном вызове .animate(). В первой версии .animate(), каждое свойство может принимать массив в качестве значения: первый элемент массива — свойство CSS, а второй — функция ускорения. Если функция ускорения по каждому свойству не определена для конкретного свойства, она использует значение необязательного аргумента ускорения метода .animate(). Если аргумент ускорения не определен, используется функция ускорения по умолчанию swing.
Например, для одновременной анимации ширины и высоты с функцией ускорения swing и анимации прозрачности с функцией ускорения linear.
Во второй версии .animate(), объект опций может включать свойство specialEasing, которое само по себе является объектом свойств CSS и соответствующих функций ускорения. Например, для одновременной анимации ширины с использованием функции ускорения linear и анимации высоты с использованием функции ускорения easeOutBounce.
Как уже отмечалось, для функции easeOutBounce требуется плагин.
Дополнительные примечания:
Все эффекты jQuery, включая .animate(), могут быть отключены глобально путём установки jQuery.fx.off = true, что эффективно устанавливает продолжительность в 0. Для получения дополнительной информации, см. jQuery.fx.off.
Примеры:
Нажмите кнопку, чтобы анимировать div с несколькими различными свойствами.
Первая кнопка показывает, как работает анимация без очереди. Она расширяет div до 90% ширины, **в то время как** увеличивается размер шрифта. После того, как изменение размера шрифта завершится, начнётся анимация рамки. Вторая кнопка запускает традиционную цепочку анимаций, где каждая анимация начнётся после завершения предыдущей анимации на элементе.
Анимировать все абзацы до левого стиля 50 и непрозрачности 1 (непрозрачный, видимый), завершив анимацию в течение 500 миллисекунд.
$( "p" ).animate({
left: 50,
opacity: 1
}, 500 );
Анимировать свойства стиля left и opacity всех абзацев; запустить анимацию *вне* очереди, чтобы она автоматически запускалась без ожидания своей очереди.
Пример использования функции «сглаживания» для предоставления другого стиля анимации. Это будет работать только в том случае, если у вас есть плагин, который предоставляет эту функцию сглаживания. Обратите внимание, что этот код ничего не сделает, если элемент абзаца скрыт.
Используйте функцию сглаживания, чтобы предоставить другой стиль анимации. Это будет работать только в том случае, если у вас есть плагин, который предоставляет эту функцию сглаживания.
Анимировать все абзацы и выполнить обратный вызов функции, когда анимация завершится. Первый аргумент — объект свойств CSS, второй указывает, что анимация должна занять 1000 миллисекунд для завершения, третий указывает тип сглаживания, а четвертый аргумент — анонимная функция обратного вызова.