Керівництво по методу jquery animate ()

jQuery animate () - метод-оболонка, тобто працює з заздалегідь обраним набором елементів DOM, обгорнутих jQuery. Метод дозволяє застосовувати необхідні ефекти анімації до елементів в наборі. Здійснення вищесказаного на практиці робиться можливим завдяки наявності набору властивостей CSS і значень, які ці властивості візьмуть по завершенні виконання анімацій. Проміжні значення, які стиль матиме після досягнення бажаного ефекту (автоматично контрольовані анімаційним движком), визначаються тривалістю ефекту і функцією-easing; дві ці опції будуть розглянуті нижче.

Список піддаються анімації властивостей CSS обмежується тими, які можуть приймати чисельні значення. Значення можуть бути абсолютними (наприклад 200), або відносними. При абсолютних значення за замовчуванням одиниця jQuery - пікселі. Ми також можемо використовувати специфічні одиниці: em, rem або відсотки. Щоб задати відносні значення використовуються префікси + = або - =; префікси направляють цільове відносне значення в позитивному або негативному напрямі, відповідно.

Параметри і сигнатура методу animate ()

Метод має дві основні форми; більшість використовуваних параметрів необов'язкові (укладені в квадратні дужки).

  • animate (properties [, duration] [, easing] [, callback])
  • animate (properties [, options])
  • properties (Об'єкт): список css-властивостей, що містить досягаються в кінці анімації значення.
  • duration (Число | Рядок): тривалість ефекту в мілісекундах або одна з заздалегідь встановлених рядків: "slow" (600ms), "normal" (400ms), або "fast" (200ms). Значення за замовчуванням - "normal".
  • easing (Рядок): Використовується при переході (transition) ім'я функції-easing (яка визначає зміну швидкості анімації). Значення за замовчуванням "swing".
  • callback (Функція): Функція, виконувана по завершенні анімації для кожного анімованого елементу.
  • options (Об'єкт): об'єкт, що містить набір властивостей (додаткові опції), які будуть передані методу. В наявності є таке властивості:
    • always (Функція): функція, що викликається по завершенні анімації або коли виконанні анімації зупиняється (але не завершується).
    • complete (Функція): виконується функція по завершенні анімації.
    • done (Функція): викликається по завершенні анімації функція.
    • duration (Рядок | Число): описана вище.
    • easing (Рядок): описана вище.
    • fail (Функція): виповнюється при невдалій спробі анімації.
    • progress (Функція): Виконується після кожного кроку анімації. Викликається один раз для кожного елемента після виконання його анімації.
    • queue (Boolean): коли анімацію треба помістити в чергу ефектів / функцій (effects queue (подробиці нижче). Значення за замовчуванням - true.
    • specialEasing (Об'єкт): об'єкт, параметрами якого є css-властивості, чиїми значеннями є функції-переходу
    • start (Функція): виконується, коли анімації починає відбуватися.
    • step (Функція): функція, яка викликається для кожного анімованого властивості кожного анімованого елементу.

Термін easing використовується для опису способу, який керує обробкою і задає швидкість кадрів анімації. Анімація виповнюється послідовно, якщо опція queue задана як true. і паралельно (без черги) - якщо як false.

Приклади використання методу animate ()

Застосуємо цей метод на практиці. Зауважу, що при виконанні анімацій складного порядку, створених цим методом, можуть виникнути помилки. Тобто для дуже складних анімацій цей метод краще уникати.

одиночна анімація

Створити одиночну анімацію гранично просто, достатньо одного виклику. Наприклад, потрібно пересунути елемент з одного боку блоку до іншого. Щоб проілюструвати цю анімацію, створимо два div елемента, один всередині іншого. Стиль наступний: фон внутрішнього div - червоний. код:

Застосуємо animate () і пересунемо маленький квадрат з однієї сторони до іншої:

Анімується тільки властивість left. Тривалість анімації - заздалегідь задане значення slow (600мс). внутрішній

(Клас якого .square-small) пересувається, використовую абсолютне значення. Значення вибирається залежно від ширини контейнера, заданого наведеним вище кодом CSS. Це рішення далеко від ідеального. Так, якщо змінити ширину контейнера, внутрішній
не досягне іншого боку (якщо ширину збільшити) або мине її (якщо ширину зменшити). Щоб уникнути цього, властивості left потрібно задати значення, залежне від розрахунку поточної ширини внутрішнього і зовнішнього
:

Запускаємо множинну анімацію в циклі

Виконання ряду анімацій на одному елементі або наборі елементів не складніше створення послідовності (ланцюжки) викликів методу animate (). Знову пересунемо маленький квадрат; рухатися він буде по периметру пісочного годинника, що знаходяться всередині великого квадрата (а не прямокутника). Для створення демо використовуємо таку розмітку:

Для .square-small скористаємося наведеними CCS-кодом з попереднього прикладу. Стиль зовнішнього квадрата:

Тепер зациклені анімацію, тобто зробимо так, щоб після закінчення анімації вона починалося знову. Щоб зробити це ми можемо зробити висновок виклик 4-х функцій animate () всередині функції, яка, своєю чергою, викликається всередині іншої функції. Тобто створимо функцію, на яку можна посилатися. Потім ми можемо скористатися функцією complete і заново запустити анімацію після останнього кроку.

Зауважте, щоб при виклику animate () не писали одні й ті ж параметри по кілька разів, була використана змінна options. Крім того на останньому кроці звернемося до функції complete () за допомогою методу JQuery extend ().

Більше функцій зворотного виклику

Також як в нашому останньому прикладі поставимо властивості start, complete, і progress за допомогою параметра options (другий параметр з другої форми). Мета - відключити кнопку, натискання по якій запускає анімацію, коли анімація (вже) виконана. Друге завдання - показати в процентному співвідношенні, яка частина від загального виконання анімації була виконана. Для цього прикладу використовуємо першу демку з внесеними в неї необхідними правками.

Щоб уможливити показ процентного співвідношення, створимо кнопку і елемент (span). розмітка:

висновок