2014-11-09 4 views
3

Я пытаюсь сделать такую ​​анимацию цикла с помощью velocity.js: перевести объект по оси X от 0 до 473, затем от 0 до 473 и так далее.Loop animation with velocity.js

Мне удалось сделать это вот так (код ниже), но в браузерах Chrome Chrome и iOS Chrome цикл начинается с некоторой задержки (лаг). Может кто-нибудь помочь?

function start() { 
    $(".el").velocity(
    { 
     translateX: [ -473, 0 ] 
    }, 
    { 
     duration: 8000, 
     delay: 0, 
     easing: "linear", 
     complete: reset 
    }); 
} 
function reset() { 
    $(".el").css("transform", "translate(0px, 0px)"); 
    start(); 
} 
start(); 

ответ

1

Поскольку вы используете принудительное кормление, то .css() вызов является излишним.

Удаление этой строки удаляет начальное отставание на Chrome для Android:

$el = $(".el"); 
function start() { 
    $el.velocity(
    { 
     translateX: [ -473, 0 ] 
    }, 
    { 
     duration: 8000, 
     delay: 0, 
     easing: "linear", 
     complete: start 
    }); 
} 

start(); 

И вы можете увидеть живую версию here.

+0

Благодарим за ответ. Действительно, вызов '.css()' не нужен. Однако отставание по-прежнему зависит от Chrome iOS и Safari iOS. Еще не тестировали Android. Обновлена ​​живая версия с анимацией, которая представляет собой задержку: http://jsfiddle.net/3eeLo819/6/ – cesgra

+0

Ваша скрипка не работает на Android Chrome, вам нужно удалить 'float' и установить' display: inline-block ', см. [здесь] (http://jsfiddle.net/3eeLo819/7/). Это отлично работает на Android – ydaniv

+0

Еще один вопрос, можно ли сделать такую ​​же анимацию без использования техники «принудительного кормления»? – cesgra