40% Анимация
Last updated
Last updated
Библиотека jQuery позволяет очень легко анимировать DOM-элементы, для этого предусмотрено несколько функций. Но обо всём по порядку. Начнём с простых hide()
и show()
, эти два метода, соответственно, скрывают либо отображают элементы:
Данные вызовы оперируют лишь CSS-атрибутом display
и переключают его из текущего состояния в none
и обратно. В качестве первого параметра можно задать скорость анимации, для этого можно использовать одно из зарезервированных слов slow
или fast
, либо же указывать скорость в миллисекундах (1000 мс = 1 сек):
В таком случае исчезновение элементов будет сопровождаться изменением атрибутов width
, height
, opacity
и прочих. В довесок к этим двум методам есть ещё метод toggle()
, который работает как переключатель hide → show
или show → hide
:
Дальше – больше, вторым параметром в приведенных методах может быть callback-функция – она будет выполнена по окончании анимации:
Анимацию таких атрибутов как height
, width
и opacity
видно невооруженным взглядом, в действительности же это далеко не всё. Заглянув внутрь jQuery, можно увидеть, что также изменяются внутренние и внешние отступы – padding
и margin
– так что не стоит об этом забывать.
Идём дальше – у нас на очереди набор методов из семейства slide: slideUp()
, slideDown()
и slideToggle()
. Их поведение схоже с предыдущими функциями, но анимация будет затрагивать лишь высоту блоков:
Прежде, чем перейти к десерту, упомяну семейство функций fade
— они манипулируют лишь атрибутом opacity
:
А теперь самое сладкое – все эффекты анимации в jQuery крутятся вокруг метода animate()
. Данная функция берёт один или несколько CSS-свойств элемента и изменяет их от исходного до заданного за N-ое количество итераций (количество итераций зависит от указанного времени, но не реже одной итерации в 13 мс, если я правильно накопал это значение). Ну что же, от слов к делу, попробуем реализовать функции fadeIn()
и fadeout()
с помощью animate()
:
Всё просто ведь. Давайте-ка теперь усложним задачу – изменим размер блоков и прозрачность:
Как видите, тоже несложно. Теперь попробуем отталкиваться от текущих значений, а не задавать необходимые:
скроем элементы изменяя высоту до 0
отобразим все элементы, постепенно увеличивая высоту элементов с нуля
работает как slideDown()
для скрытых элементов, иначе как slideUp()
изменяет opacity
от текущего до 0
изменяет opacity
от 0
до предыдущего значения
переключатель между In
и Out
изменяет значение opacity
до требуемого значения
скроем элементы
отобразим элементы