jQuery метод .animate()
Определение и применение
jQuery метод .animate() позволяет выполнить пользовательскую анимацию, основанную на изменении CSS свойств для выбранных элементов.
jQuery синтаксис:
Синтаксис 1.0:
$( selector ).animate( { properties }, duration, easing, complete )properties - PlainObject
duration - Number, или String
easing - String
complete - Function
$( selector ).animate( { properties }, { options } )properties - PlainObject
options - PlainObject
Добавлен в версии jQuery
1.0Значения параметров
| Параметр | Описание |
|---|---|
| properties |
Задает одну или несколько пар CSS свойство - значение, которые будут анимированы. Имена свойств должны быть
написаны в нотации
CamelCase. Анимированы могут быть только числовые значения. Помимо числовых значений, каждое свойство может принимать
только следующие строковые значения:
Значение анимированных свойств также могут быть относительными. Например, если значение указывается с
Допускается использование с методом .animate() следующих свойств:
|
| duration | Строковое или числовое значение, которое определяет, как долго анимация будет продолжаться. Значение по умолчанию 400 (в миллисекундах). Строковые ключевые слова 'fast' и 'slow' соответствуют 200 и 600 миллисекундам соответственно (высокие значения указывают на медленную анимацию, а более низкие на быструю). |
| easing | Ключевое слово (строка), которое опряеделяет кривую скорости для анимации (используется математическая функция - кубическая кривая Безье). Без использования внешних плагинов имеет только два значения - linear (эффект анимации с одинаковой скоростью от начала до конца) и swing (эффект анимации имеет медленный старт и медленное окончание, но скорость увеличивается в середине анимации). Значение по умолчанию swing. |
| complete |
Функция, которая будет выполнена после завершения анимации, она вызывается один раз для каждого
соответствующего элемента. Внутри функции, переменная this ссылается на
DOM элемент к которому применяется
анимация.
|
| options |
|
Пример использования
Пример использования jQuery метода .animate() (использование объекта со свойствами)
Нажмите ▶, затем выполните действие из пояснения. Измените JavaScript и запустите пример ещё раз. В редакторе используется jQuery 3.1.1.
index.html
<button class="start">Метод .animate()</button>
<div>Animate me</div>
main.js
$(document).ready(function () {
$('.start').click(function () {
$('div').animate({
width: '90%',
opacity: 0.5,
height: '150px',
fontSize: '2em',
borderWidth: '5px',
})
})
})
style.css
div {
width: 80px;
height: 80px;
border: 1px solid orangered;
margin-top: 50px;
}
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием jQuery метода .animate() мы при нажатии на кнопку с классом
start выполняем анимацию основанную на изменении CSS свойств
width
(ширина элемента),
opacity
(прозрачность элемента),
height
(высота элемента),
font-size
(размер шрифта элемента) и
border-width
(ширина границ элемента) для выбранного элемента
<div>
в документе.
Обратите внимание на то, что мы передали методу только объект со свойствами, которые будут анимированы. Длительность анимации по умолчанию составляет 400 миллисекунд, а кривая скорости для анимации используется "swing" (эффект анимации имеет медленный старт и медленное окончание, но скорость увеличивается в середине анимации).
Рассмотрим следующий пример в котором зададим методу .animate() помимо свойств, которые подлежат анимации, значение для продолжительности анимации, укажем кривую скоростии и callback функцию:
Пример использования jQuery метода .animate() (продолжительность, скорость, callback)
Нажмите ▶, затем выполните действие из пояснения. Измените JavaScript и запустите пример ещё раз. В редакторе используется jQuery 3.1.1.
index.html
<button class="start">Метод .animate()</button>
<div>Animate me</div>
main.js
$(document).ready(function () {
$('.start').click(function () {
$('div').animate(
{
width: '90%',
opacity: 0.5,
height: '150px',
fontSize: '2em',
borderWidth: '5px',
},
1500,
'linear',
function () {
$(this).text('Thats all folks!').css('color', 'green')
}
)
})
})
style.css
div {
width: 80px;
height: 80px;
border: 1px solid violet;
margin-top: 50px;
}
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием jQuery метода .animate() мы при нажатии на кнопку с классом
start выполняем анимацию основанную на изменении CSS свойств
width
(ширина элемента),
opacity
(прозрачность элемента),
height
(высота элемента),
font-size
(размер шрифта элемента) и
border-width
(ширина границ элемента) для выбранного элемента
<div>
в документе.
Кроме того, мы указали длительность анимации равную 1500 миллисекунд (1,5 секунды), использовали кривую
скорости для анимации "linear" (эффект анимации с одинаковой скоростью от начала до конца) и указали callback
функцию, которая запустится после завершения анимации. В это функции this ссылается на наш элемент
<div>, которому мы с использованием метода
.text()
изменяем текстовое содержимое, а методом
.css()
устанавливаем зеленый цвет текста.
Рассмотрим следующий пример в котором зададим методу .animate() относительные значения, которые вычисляются путем сложения, или вычитания заданного числа от текущего значения элемента:
Пример использования jQuery метода .animate() (относительные значения)
Нажмите ▶, затем выполните действие из пояснения. Измените JavaScript и запустите пример ещё раз. В редакторе используется jQuery 3.1.1.
index.html
<button class="left">Left</button>
<button class="right">Right</button>
<div>Animate me</div>
main.js
$(document).ready(function () {
$('.left').click(function () {
$('div').animate(
{
right: '+=50px',
borderWidth: '-=2px',
},
'linear'
)
})
$('.right').click(function () {
$('div').animate(
{
right: '-=50px',
borderWidth: '+=2px',
},
'linear'
)
})
})
style.css
div {
width: 80px;
height: 80px;
border: 1px solid red;
margin-top: 50px;
position: absolute;
}
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием jQuery метода .animate() мы при нажатии на определённую кнопку выполняем
анимацию основанную на изменении CSS свойств
right, которое отвечает за смещение элемента относительно правого края и свойства
border-width
(ширина границ элемента) для выбранного элемента
<div>
в документе.
При нажатии на кнопку (элемент
<button>) с классом left элемент смещается относительного правого края окна браузера на 50 пикселей от его текущего
значения (значение увеличивается и элемент смещается влево), ширина границ элемента при этом уменьшается на
два пикселя. А при нажатии на кнопку (элемент
<button>) с классом right происходит все тоже самое, но с точностью наоборот (значение смещения от правого края окна
браузера уменьшается и элемент смещается вправо, а ширина границ элемента увеличивается на два пикселя).
Кроме того, мы указали кривую скорости для анимации "linear" - эффект анимации с одинаковой скоростью от начала до конца.
Рассмотрим следующий пример в котором зададим методу .animate() в качестве значений свойств, строковые значения (ключевые слова):
Пример использования jQuery метода .animate() (строковые значения)
Нажмите ▶, затем выполните действие из пояснения. Измените JavaScript и запустите пример ещё раз. В редакторе используется jQuery 3.1.1.
index.html
<button class="start">Метод .animate()</button>
<div>Animate me</div>
main.js
$(document).ready(function () {
$('.start').click(function () {
$('div').animate(
{
width: ['toggle', 'swing'],
height: ['toggle', 'swing'],
opacity: 'toggle',
},
1500,
'linear'
)
})
})
style.css
div {
width: 150px;
height: 150px;
border: 1px solid blue;
margin-top: 50px;
}
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием jQuery метода .animate() мы при нажатии на кнопку с классом
start выполняем анимацию основанную на изменении CSS свойств
width
(ширина элемента),
height
(высота элемента) и
opacity
(прозрачность элемента) для выбранного элемента
<div>
в документе.
В качестве значений свойств мы указываем не числовые значения, а строки - специальные ключевые слова, которые по аналогии с методом .toggle() позволяют в зависимости от видимости элемента производить анимированное скрытие элемента, либо его отображение.
Кроме того, для значений ширины и высоты мы явно указываем кривую скорости анимацим - "swing". Обратите
внимание, что мы передали эти значения в массиве. Для свойство
opacity
(прозрачность элемента) будет использована скорость анимации "linear", так как мы указали его отдельным
параметром метода .animate() и не указали явно как свойствам
width
и
height. Кроме того, мы указали длительность анимации равную 1500 миллисекунд (1,5 секунды).
Рассмотрим следующий пример в котором передадим методу .animate() два объекта в качестве параметров, первый со свойствами, которые будут анимированы, а второй с опциями, которые будут контролировать эту анимацию:
Пример использования jQuery метода .animate() (объект со свойствами и опциями)
Нажмите ▶, затем выполните действие из пояснения. Измените JavaScript и запустите пример ещё раз. В редакторе используется jQuery 3.1.1.
index.html
<button class="start">Метод .animate()</button>
<p class="status"></p>
<div>Animate me</div>
main.js
$(document).ready(function () {
$('.start').click(function () {
$('div').animate(
{
width: '90%',
opacity: 0.5,
height: '100px',
fontSize: '2em',
borderWidth: '5px',
},
{
duration: 1500,
easing: 'linear',
complete: function () {
$('.status').text('Анимация завершена')
},
queue: false,
}
)
})
})
style.css
div {
width: 80px;
height: 80px;
border: 1px solid yellow;
margin-top: 50px;
}
Нажмите ▶, чтобы запустить пример.
В этом примере с использованием jQuery метода .animate() мы при нажатии на кнопку с классом
start выполняем анимацию основанную на изменении CSS свойств
width
(ширина элемента),
opacity
(прозрачность элемента),
height
(высота элемента),
font-size
(размер шрифта элемента) и
border-width
(ширина границ элемента) для выбранного элемента
<div>
в документе.
Обратите внимание на то, что во втором объекте, используемого в качестве параметра метода .animate(), мы передали опции, которые будут контролировать нашу анимацию:
- продолжительность анимации равную 1500 миллисекунд (duration: 1500)
- эффект анимации происходит с одинаковой скоростью от начала до конца (easing: linear)
- функция, которая после завершения анимации находит элемент с классом status и добавляет текстовую информацию (complete: function).
- анимация не размещается в очереди эффектов (queue: false).