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