40% Анимация
Библиотека jQuery позволяет очень легко анимировать DOM-элементы, для этого предусмотрено несколько функций. Но обо всём по порядку. Начнём с простых hide()
и show()
, эти два метода, соответственно, скрывают либо отображают элементы:
hide()
скроем элементы
show()
отобразим элементы
Данные вызовы оперируют лишь CSS-атрибутом display
и переключают его из текущего состояния в none
и обратно. В качестве первого параметра можно задать скорость анимации, для этого можно использовать одно из зарезервированных слов slow
или fast
, либо же указывать скорость в миллисекундах (1000 мс = 1 сек):
// медленно спускаемся с горы и… скрываем все картинки
// slow == 600
// fast == 200
$("img").hide('slow')
// теперь вернём их на место, чуть быстрее
$("img").show(400)
В таком случае исчезновение элементов будет сопровождаться изменением атрибутов width
, height
, opacity
и прочих. В довесок к этим двум методам есть ещё метод toggle()
, который работает как переключатель hide → show
или show → hide
:
// запустите пару раз
$("img").toggle()
Дальше – больше, вторым параметром в приведенных методах может быть callback-функция – она будет выполнена по окончании анимации:
// скрываем все картинки
$("img").hide("slow", function() {
// опосля отображаем alert
alert("Images was hidden")
});
Идём дальше – у нас на очереди набор методов из семейства slide: slideUp()
, slideDown()
и slideToggle()
. Их поведение схоже с предыдущими функциями, но анимация будет затрагивать лишь высоту блоков:
slideUp()
скроем элементы изменяя высоту до 0
slideDown()
отобразим все элементы, постепенно увеличивая высоту элементов с нуля
slideToggle()
работает как slideDown()
для скрытых элементов, иначе как slideUp()
Прежде, чем перейти к десерту, упомяну семейство функций fade
— они манипулируют лишь атрибутом opacity
:
fadeOut()
изменяет opacity
от текущего до 0
fadeIn()
изменяет opacity
от 0
до предыдущего значения
fadeToggle()
переключатель между In
и Out
fadeTo(0.5)
изменяет значение opacity
до требуемого значения
А теперь самое сладкое – все эффекты анимации в jQuery крутятся вокруг метода animate()
. Данная функция берёт один или несколько CSS-свойств элемента и изменяет их от исходного до заданного за N-ое количество итераций (количество итераций зависит от указанного времени, но не реже одной итерации в 13 мс, если я правильно накопал это значение). Ну что же, от слов к делу, попробуем реализовать функции fadeIn()
и fadeout()
с помощью animate()
:
// fadeOut()
$("img").animate({
"opacity": "hide"
})
// fadeIn()
$("img").animate({
"opacity": "show"
})
Всё просто ведь. Давайте-ка теперь усложним задачу – изменим размер блоков и прозрачность:
// значения указанных свойств будут плавно изменяться
// от текущих до заданных
$("img").animate({
"opacity": 0.5,
"height": "100px",
"width": "100px"
})
Как видите, тоже несложно. Теперь попробуем отталкиваться от текущих значений, а не задавать необходимые:
// изменяем, шаг за шагом
$("img").animate({
"opacity": "+=0.1",
"height": "+=12px",
"width": "+=20px"
})
Last updated