Основно съдържание
Курс: Програмиране > Раздел 6
Урок 6: DOM анимация- Обектът window
- Анимиране на DOM с метода setInterval
- Предизвикателство: Хронометър
- Анимиране на стилове с метода requestAnimationFrame
- Предизвикателство: Котешка походка
- Анимиране на стилове със CSS анимации
- Каква техника на DOM анимация трябва да използваш?
© 2024 Khan AcademyУсловия за ползванеДекларация за поверителностПолитика за Бисквитки
Каква техника на DOM анимация трябва да използваш?
Досега видя три техники, чрез които можеш да анимираш части от своята уеб страница:
window.setInterval
/setTimeout
, window.requestAnimationFrame
и CSS анимации и плавни преходи.Когато обмисляш коя техника да използваш, трябва да помислиш върху следните въпроси:
- Може ли наистина да прави това, което искам да прави?
- Колко добре работи тази техника? (Забавя ли браузъра или компютъра?)
- Колко прецизно трябва да е времето за реакция?
- Работи ли във всички браузъри, в които искам да работи?
Когато правим уеб страници, сме загрижени за производителността, затова можем да приемем, че това е най-важният критерий. Производителността в браузъра обаче се променя, когато се появят нови браузъри, а мобилните браузъри могат да работят по различен начин от настолните, затова техниката, която днес работи най-добре, утре може да не е най-добрата. За момента CSS анимациите/трансформациите са най-добри, когато става дума за производителност, следвани от
requestAnimationFrame
и setInterval
.И все пак CSS не може да направи всичко. Например, за да нарисуваш пиксели и форми в тага
<canvas>
, трябва да извикаш функции като fillRect()
и не можеш да изпозлваш CSS. Вместо това ще трябва да използваш requestAnimationFrame
или setInterval
, за да извикваш периодично тези функции. Всъщност точно това правим тук в Кан Академия в нашата среда на ProcessingJS. ProcessingJS е JS библоиотека, която рисува в таг <canvas>
и ако дефинираш функция draw()
в своя код, тогава ProcessingJS използва setInterval
, за да извиква постоянно функцията draw()
според frameRate
.Понякога искаш да извикаш JavaScript функции периодично, но не защото ти трябва да анимираш нещо на страницата. Може би изпращаш заявки към сървър за актуализация, както прави Twitter, когато актуализира своите новини в реално време. В този случай можеш просто да използваш
setInterval
и тогава няма да има значение, че реакцията не е мигновена, защото го извикваш на всяка минута или нещо такова. Това правим в Кан Академия на страницата за помощ, за да проверяваме на всеки 2 минути дали няма изпратени заявки за помощ.Разбира се, не трябва да забравяш за съвместимостта с браузъри. Ако пишеш код, който трябва да работи в IE9, тогава не можеш да използваш
requestAnimationFrame
или CSS анимации. Трябва да използваш комбинация от техники, които работят в браузърите, или да намериш библиотека, която да прави това вместо теб, например Velocity.js.Още много може да се научи за всички тези техники. Посети тези линкове, за да научиш повече:
Бонус за феновете на сериала Doctor Who: един от моите любими примери за силата на CSS3 анимациите в този анимиран TARDIS.
Искаш ли да се присъединиш към разговора?
Все още няма публикации.