Для начала необходимо удостовериться, что в текущий момент времени элемент находится в видимой области экрана
как пример, вот такая ф-я
function isScrolledIntoView(el) {
var elemTop = el.getBoundingClientRect().top,
elemBottom = el.getBoundingClientRect().bottom,
isVisible = (elemTop >= 0) && ((elemBottom + 240) <= window.innerHeight);
return isVisible;
}
В этом примере я наблюдал, доскроллил ли пользователь до нужного мне элемента, и, если доскроллил, запускал анимацию.
var visible = false;
$(window).on('scroll', function () {
var $box = $('.boxed-container');
if ($box.size()) {
var vis = isScrolledIntoView($box[0]),
duration = 1000;
if (vis && !visible) {
$box.find('.item2').velocity({left: 0}, {
duration: duration,
complete: function () {
$box.find('.item1').velocity({left: 0}, duration);
}
});
$box.find('.item4').velocity({left: 0}, {
duration: duration,
complete: function () {
$box.find('.item5').velocity({left: 0}, duration);
}
});
}
visible = vis;
}
});
Может это вас натолкнет на решение.