Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
jQuery-tutorial-for-beginners-1.0.0.pdf
Скачиваний:
29
Добавлен:
17.02.2016
Размер:
1.82 Mб
Скачать

40% Анимация

Фреймворк jQuery позволяет очень легко анимировать DOM элементы, для этого предусмотрено несколько функций, но обо всём по порядку, начнём с простого hide() и show(), эти два метода соответственно скрывают либо отображают элементы:

// скроем все картинки $('img').hide();

// теперь вернём их на место $('img').show();

Данные вызовы оперируют лишь CSS атрибутом display и переключают его из текущего состояния в none и обратно. В качестве первого параметра можно задать скорость анимации, для этого можно использовать одно из зарезервированных слов «slow» или «fast», либо же указывать скорость в миллисекундах (1000 мс = 1 сек):

//медленно спускаемся с горы и… скрываем все картинки

//slow == 600

//fast == 200

$('img').hide('slow');

// теперь вернём их на место, чуть быстрее $('img').show(400);

В таком случае, исчезновение элементов будет сопровождаться анимацией атрибутов width, height, opacity и прочих (см. пример в hide.html). В довесок к этим двум методам есть еще метод toggle(), он работает как переключатель hide → show или show → hide.

Теперь идём немножко дальше – вторым параметром в приведенных методах может быть callback-функция – она будет выполнена по окончанию анимации элементов:

// скрываем все картинки $('img').hide('slow', function(){

// опосля отображаем alert alert("Images was hidden");

});

Приведу иллюстрацию для наглядности процесса анимации:

51

Рисунок 1 — анимация show()

Анимацию атрибутов height, width и opacity видно невооружённым взглядом, в действительности же это далеко не всё, заглянув внутрь jQuery можно увидеть, что так же изменяются внутренние и внешние отступы – padding и margin – так что не стоит об этом забывать.

52

Идём дальше – у нас на очереди набор методов slide slideUp(), slideDown() и slideToggle(). Их поведение схоже с предыдущими функциями, но анимация будет затрагивать лишь высоту блоков – смотрим пример slide.html (ну и иллюстрации так же есть):

Рисунок 2 — анимация slideDown()

Прежде чем перейти к десерту упомяну семейство функций fade – они манипулируют лишь opacity:

fadeIn(duration, callback) – изменяет opacity от 0 до предыдущего fadeOut(duration, callback) – изменяет opacity от текущего до 0 fadeToggle(duration, callback) – переключатель между In и Out fadeTo(duration, opacity, callback) – изменяет opacity до требуемого значения

53

А теперь самое сладкое – все эффекты анимации в jQuery крутятся вокруг метода animate. Данная функция берет один или несколько CSS-свойств элемента и изменяет их от исходного до заданного за N-ое количество итераций (количество итераций зависит от указанного времени, но не реже одной итерации в 13мс, если я правильно накопал это значение). Ну что-же, от слов к делу, попробуем реализовать функции fadeIn и fadeOut с помощью animate (см. пример animate.html):

// fadeOut()

$('article img').animate({ 'opacity':'hide'

})

// fadeIn()

$('article img').animate({ 'opacity':'show'

})

Всё просто, давайте-ка теперь усложним задачу – изменим размер блоков и прозрачность:

//значения указанных свойств будут плавно изменяться

//от текущих до заданных

$('article img').animate({ 'opacity':0.5, 'height':'50px', 'width':'250px'

})

Как видите – тоже несложно, теперь попробуем отталкиваться от текущих значений, а не задавать необходимые:

// изменяем, шаг за шагом $('article img').animate({ 'opacity':'-=0.1', 'height':'+=10px'

})

Поигрались и хватит, пора усложнить вам жизнь – у функции animate может быть более одного параметра, и пора приступить к их разбору. Набор параметров может быть разным, приведу первый, тот, что попроще:

54

params – CSS свойства – с этим мы уже познакомились

duration – скорость анимации – тоже упоминалась ранее, указывается в миллисекундах, или используя ключевые слова "fast" или "slow"

easing – указываем какую функцию будем использовать для изменения значений

callback – функция, которая будет вызвана после окончания анимации

Из приведённых параметров нам только easing не встречался ранее – я его берёг на сейчас – этот параметр указывает, какая функция будет использоваться для процесса анимации значений. Это могут быть линейные, квадратичные, кубически и любые другие функции. «Из коробки» мы можем выбрать лишь между «linear» и «swing»:

Рисунок 3 — easing «linear»

Рисунок 4 — easing «swing»

Заглянув в код jQuery мы легко найдём соответствующий код:

linear: function(p) { return p;

},

swing: function(p) {

return 0.5 - Math.cos( p*Math.PI ) / 2;

}

p – коэффициент прохождения анимации, изменяется от 0 до 1

Сложно? Хотите больше и сразу? Тогда ищите easing plugin на странице http://gsgd.co.uk/sandbox/jquery/easing/, он действительно из разряда «must have».

55