animate()
Метод animate()
используется для создания пользовательской анимации. Анимация осуществляется за счёт плавного изменения одного или нескольких CSS-свойств. Изменение всех указанных свойств выполняется одновременно (параллельно).
Свойства, которые необходимо анимировать, передаются первым аргументом метода в виде объекта, в котором каждому свойству указано конечное значение.
Метод animate()
позволяет указать параметры анимации. Они задаются в виде объекта (параметры duration
, easing
и complete
можно задать отдельными аргументами).
Варианты использования
jQ_object.animate(свойства, опции) => jQuery
- Выполняет анимацию изменения заданных CSS-свойств для каждого элемента выборки. Анимируемые свойства передаются в виде объекта, в котором каждому свойству установлено конечное значение. Параметры анимации (
опции
) тоже задаются в виде объекта. Описание свойств и опций приводится ниже. jQ_object.animate(свойства[, duration][, easing][, complete]) => jQuery
-
Выполняет анимацию изменения заданных CSS-свойств для каждого элемента выборки.
duration
,easing
,complete
- наиболее востребованные параметры анимации (их описание приводится ниже). Возможность указать данные опции отдельными аргументами реализована для удобства разработки.
Анимируемые свойства
Свойства, которые необходимо анимировать, передаются первым аргументом метода в виде объекта, в котором каждому свойству установлено конечное значение. Данный объект аналогичен тому, который можно указать при вызове метода css()
. Пример:
/* Анимация одновременно двух свойств */ jQ_object.animate({ CSS_свойство_1: значение_1, CSS_свойство_2: значение_2 })
Анимировать можно только те свойства, которые имеют числовое значение. Например, свойства width
, margin
и т.п. можно анимировать, а свойство background-color
нельзя. Значение свойства задаётся в виде строки с указанием единицы измерения. Если значение задано без единиц измерения или простым числом, тогда значение принимается в пикселях. Пример:
jQ_object.animate({ width: 300, 'line-height': '25' }) /* В конце анимации свойство width примет значение 300px, а line-height 25px */
Как и в методе css()
, конечное значение CSS-свойства можно задать в виде приращения к текущему значению. Если строка начинается с
или +=
, тогда выполняется увеличение или уменьшение значения на заданную величину. Пример:-=
jQ_object.animate({ width: '+=50' }) /* Свойство width увеличится на 50px */
Также, в качестве значения свойства можно указать одно из специальных значений:
'hide'
- уменьшает значение свойства до 0, а после этого скрывает элемент (устанавливает свойствоdisplay: none
);'show'
- показывает элемент на странице (удаляет свойствоdisplay: none
), а после этого увеличивает значение свойства от 0 до исходного;'toggle'
- выполняет действия в зависимости от значения свойстваdisplay
. Если свойствоdisplay
имеет значениеnone
, тогда выполняются действия по алгоритму'show'
. Во всех остальных случаях выполняется алгоритм'hide'
.
Помимо существующих CSS-свойств, в jQuery можно анимировать дополнительные свойства scrollTop
и scrollLeft
- вертикальная и горизонтальная прокрутка страницы соответственно.
Параметры анимации
duration :number,string = 400
- Продолжительность анимации в миллисекундах. Можно использовать ключевые слова
'fast'
и'slow'
, которые соответствуют значениям 200 и 600. Если данный параметр не указан, тогда используется значение 400. easing :string = 'swing'
-
Определяет, с какой скоростью выполняется анимация в различные моменты времени. В jQuery доступны два ключевых слова для определения динамики анимации:
'linear'
- анимация выполняется с постоянной скоростью. Это самый простой вариант анимации. Значение параметра изменяется пропорционально прошедшему времени.'swing'
- анимация начинается медленно и ускоряется, в средней части анимация выполняется с постоянной скоростью, а ближе к концу замедляется (как качели).
progress
- время анимации в относительных единицах (от 0 до 100%);pos
- относительное изменение параметра (от 0 до 100%).
'swing'
. specialEasing :object
- Позволяет отдельно задать свойство
easing
для каждого анимируемого CSS-свойства. Параметр задаётся в виде объекта, в котором каждому CSS-свойству установлено значение'swing'
или'linear'
(или другое доступное значение). queue :boolean,string = true
-
Для одного элемента страницы может быть установлено несколько анимационных эффектов. По умолчанию каждая последующая анимация запускается только по завершении предыдущей.
Параметрqueue
определяет, поместить ли данный эффект в очередь или запустить немедленно:true
- поместить анимацию в стандартную очередь
(используется по умолчанию);fx
false
- запустить анимацию немедленно.
dequeue()
. step :function(текущее_значение, объект_анимации_свойства)
-
Функция, которая будет запущена после каждого изменения каждого CSS-свойства на каждом элементе выборки. Функция может принимать два аргумента:
- Числовое значение, которое присвоено изменяемому CSS-стилю на данном шаге анимации.
-
Объект анимации изменяемого CSS-свойства для текущего элемента выборки. Изменяя некоторые свойства данного объекта, можно управлять анимацией. Объект содержит следующие свойства:
elem
- ссылка на текущий анимируемый элемент;prop
- название анимируемого CSS-свойства;easing
- значение параметраeasing
для данного CSS-свойства;options
- ссылка на объект, содержащий параметры анимации (в том числе, указанные при вызове данного метода);unit
- единица измерения CSS-свойства;start
- начальное значение CSS-свойства;end
- конечное значение CSS-свойства;now
- текущее значение CSS-свойства;pos
- число от 0 до 1, характеризующее степень завершённости анимации по изменяемому параметру.
progress :function(общий_объект_анимации, время, оставшееся_время)
-
Функция, которая будет запущена после каждого шага анимации на каждом элементе выборки (шаг анимации - однократное изменение всех анимируемых CSS-свойств). Функция может принимать три аргумента:
-
Общий объект анимации для текущего элемента выборки. Изменяя некоторые свойства данного объекта, можно управлять анимацией. Основные свойства объекта:
elem
- ссылка на текущий анимируемый элемент;opts
- ссылка на объект, содержащий параметры анимации (в том числе, указанные при вызове данного метода);startTime
- время начала анимации в миллисекундах;duration
- заданное время анимации в миллисекундах;tweens
- массив индивидуальных объектов анимации по отдельным CSS-свойствам.
- Число от 0 до 1, характеризующее степень завершённости анимации по времени.
- Количество миллисекунд, оставшихся до конца анимации.
-
Общий объект анимации для текущего элемента выборки. Изменяя некоторые свойства данного объекта, можно управлять анимацией. Основные свойства объекта:
complete :function()
- Функция, которая будет запущена для каждого элемента выборки в момент завершения анимации. Внутри функции переменная
this
содержит ссылку на тот элемент, для которого выполняется функция. start :function(общий_объект_анимации)
- Функция, которая будет запущена для каждого элемента выборки в момент начала анимации. Функция может принимать один аргумент - общий объект анимации для текущего элемента.
done :function(общий_объект_анимации, завершено_мгновенно)
-
Функция, которая будет запущена для каждого элемента выборки после завершения анимации. Функция может принимать два аргумента:
- Общий объект анимации для текущего элемента.
-
Логическое значение, характеризующее завершённость анимации по изменяемым параметрам при принудительном завершении анимации методами
stop()
илиfinish()
:true
- анимируемым свойствам присвоены конечные значения;false
- анимируемые свойства не достигли конечных значений.
undefined
.
fail :function(общий_объект_анимации, завершено_мгновенно)
-
Функция, которая будет запущена для каждого элемента выборки с незаконченной анимацией (если анимация не может быть завершена). Функция может принимать два аргумента:
- Общий объект анимации для текущего элемента.
-
Логическое значение, характеризующее завершённость анимации по изменяемым параметрам при принудительном завершении анимации методами
stop()
илиfinish()
:true
- анимируемым свойствам присвоены конечные значения;false
- анимируемые свойства не достигли конечных значений.
undefined
.
always :function(общий_объект_анимации, завершено_мгновенно)
-
Функция, которая будет запущена в конце анимации для каждого элемента выборки вне зависимости от того, может ли она быть завершена. Функция может принимать два аргумента:
- Общий объект анимации для текущего элемента.
-
Логическое значение, характеризующее завершённость анимации по изменяемым параметрам при принудительном завершении анимации методами
stop()
илиfinish()
:true
- анимируемым свойствам присвоены конечные значения;false
- анимируемые свойства не достигли конечных значений.
undefined
.
Примеры
<html> <head> <title>Анимация в jQuery</title> <script type="text/javascript" src="js/jquery.js"></script> </head> <body> <div style="width: 200px; height: 200px; background: coral"></div> <button>Кнопка</button> </body> </html> <script> $('button').on('click', function() { $('div').animate( { height: 'toggle', width: 'toggle', marginLeft: '+=30' }, { duration: 5000, specialEasing: { height: 'linear', width: 'swing', marginLeft: 'linear' }, progress: function(animation, progress, remainingMs) { $(this).text(remainingMs); }, complete: function() { alert('Анимация завершена'); } }); }); </script>
<html> <head> <title>Анимация в jQuery</title> <script type="text/javascript" src="js/jquery.js"></script> </head> <body> <button class="button_left">←</button> <button class="button_right">→</button> <div style="width: 50px; height: 50px; background: coral; position: relative"></div> </body> </html> <script> $('.button_left').on('click', function() { $('div').animate({left: '-=50'}); }); $('.button_right').on('click', function() { $('div').animate({left: '+=50'}); }); </script>