113 of 119 menu

Метод animate

Методът animate позволява създаването на анимационни ефекти за различни CSS свойства. Единственият задължителен параметър - обект с CSS свойства, подобен на този, който предаваме на метода css. Много свойства, които имат нечислови стойности или няколко стойности не могат да бъдат анимирани с базовия функционалност на jQuery (например background-color). Също така не винаги се поддържат съкратени названия на CSS свойства, например font - вместо това трябва да се използва fontSize или font-size. Пред стойностите може да се постави '+=' или '-=', в такъв случай посочената стойност ще бъде добавена или извадена от текущата стойност на свойството. Също така вместо числови стойности може да се постави show, hide или toggle. Всички jQuery ефекти, включително animate, могат да бъдат изключени глобално, като се използва настройката jQuery.fx.off = true, която задава стойност на продължителността от 0.

Синтаксис

Първият параметър на анимацията се предава обект с CSS свойства и техните стойности във формат ключ: стойност, които ще бъдат анимирани. Останалите параметри се считат за незадължителни. Вторият параметър - определя продължителността на анимацията в милисекунди, 400мс по подразбиране. Третият параметър е функция за плавност на прехода (по подразбиране това е swing), както и четвъртият - callback функция, която ще се изпълни след завършване на анимацията:

.animate(properties, [duration ], [easing ], [callback ]);

Времето може да се задава не само в милисекунди, но и с ключови думи slow (600мс) и fast (200мс), колкото по-голяма е стойността, толкова по-бавна е анимацията. Може като втори параметър да се предадат на метода различни опции, под формата на JavaScript обект, съдържащ двойки ключ: стойност:

.animate(properties, options);

Например, нека зададем за CSS свойствата width и height стойност toggle. Продължителност на 5000мс, функциите за плавност ще предадем като обект, за ширината това ще бъде линейна функция, а за височината - easeOutBounce, също така при завършване на анимацията ще се изпълни веднъж функцията (виж ключа complete), която след елемента с #test ще постави div с надпис 'Animation complete.':

$('#test').animate({ width: 'toggle', height: 'toggle' }, { duration: 5000, specialEasing: { width: 'linear', height: 'easeOutBounce' }, complete: function() { $(this).after('<div>Animation complete.</div>'); } });

По-долу в таблицата са показани свойствата и методите на обекта options и тяхното описание:

Име Описание
duration Продължителност на анимацията в милисекунди - низ или число. 400мс по подразбиране.
easing Определя коя функция за плавност да се използва. swing по подразбиране.
queue Булева стойност или низ. true по подразбиране. Посочва дали да се постави анимацията в опашка. При стойност false анимацията ще започне незабавно. Ако параметърът се подаде като низ, тогава анимацията ще бъде поставена в опашка, представена от този параметър. При използване на опашка с потребителско име, анимацията няма да започне автоматично, за да я стартирате - използвайте dequeue('queuename').
specialEasing Тук можете да предадете обект, в който ключовете са CSS свойства, а стойностите - съответните им функции за плавност.
step Функция, която се извиква за всяко анимирано свойство на всеки анимиран елемент. Тя позволява модифицирането на Tween обект, за да се промени стойността на свойството преди то да бъде зададено. Като параметри приема текущата стойност на tween и Tween обекта.
progress Функция, извиквана след всяка стъпка от анимацията, само по веднъж за всеки елемент независимо от броя на анимираните свойства. Функцията приема три параметъра animation (под формата на promise), progress (число от 0 до 1) и remainingMs (число на оставащите милисекунди).
complete Функция, извиквана веднъж след приключване на анимацията на елемента. Функцията приема animation (под формата на promise).
start Функция, която се извиква, когато анимацията на елемента започва. Функцията приема animation (под формата на promise) и jumpedToEnd (Булева стойност. Ако true, тогава анимацията автоматично се завършва).
done Функция, която се извиква, когато анимацията на елемента приключи (нейният promise е изпълнен успешно). Функцията приема animation (под формата на promise) и jumpedToEnd (Булева стойност. Ако true, тогава анимацията автоматично се завършва).
fail Функция, която се извиква, когато анимацията на елемента завършва с грешка (нейният promise е изпълнен с грешка). Функцията приема animation (под формата на promise) и jumpedToEnd (Булева стойност. Ако true, тогава анимацията автоматично се завършва).
always Функция, която се извиква, когато анимацията на елемента завършва или спира без завършване (нейният promise е изпълнен успешно или с грешка). Функцията приема animation (под формата на promise) и jumpedToEnd (Булева стойност. Ако true, тогава анимацията автоматично се завършва).

Пример

Нека при натискане на бутона #left да преместваме зеления квадрат наляво, а при бутона #right надясно с 50px, също така да зададем продължителност на 600мс - с командата slow:

<button id="left">left</button> <button id="right">right</button> <div class="block"></div> div { position: absolute; background-color: green; left: 50px; width: 100px; height: 100px; margin: 5px; } $('#right').click(function() { $('.block').animate({'left': '+=50px'}, 'slow'); }); $('#left').click(function() { $('.block').animate({'left': '-=50px'}, 'slow'); });

Вижте също

  • метод show,
    който плавно показва елементи
  • метод stop,
    който позволява спиране на стартирана анимация
  • метод delay,
    който задава забавяне на изпълнението на събития
  • свойство jQuery.fx.off,
    което позволява глобално изключване на анимацията
  • селектор animated,
    който избира елементи, които в дадения момент са задействани в анимация
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне