Во-первых, убедитесь, что вы анимируете одиночный DOM-элемент, а не набор отдельных облаков.Поместите ваши облака в контейнер и переместите последний.
Во-вторых, взгляните на CSS3 переходы .Они намного более плавные (с GPU-ускорением), чем анимация на основе JavaScript.Кроме того, супер прост в освоении и использовании.Просто опишите класс CSS и добавьте его к своим облакам при начальной настройке положения.
Что касается определения того, находится ли вкладка браузера в фоновом режиме, requestAnimationFrame
, используетсяjQuery как тикер анимации , который является тикером 60 FPS, может сделать это для вас автоматически .
Похоже, jQuery больше не использует requestAnimationFrame
(они привык к в какой-то момент, но потом убрал его).Итак, вот анимационная функция , использующая requestAnimationFrame
(с setTimeout
прокладкой для IE), из которой вы можете украсть идеи (или просто взять саму функцию).