Ввможете задейсвовать css анимацию по увеличению/уменьшению размеров скорость которой будет соответствовать стокорости полной js анимации.
Здесь Пример анимации. обратите внимание на строку
transition: width 1s linear, height 1s linear;
там в секундах указано скорость анимации. А в js Я просто изменяю класс. Тоесть вам не нужно делать это в цикле. Вы просто изменяете классы для элементов и запускаете анимацию карусели. Должно все получиться в лучшем виде.
Есть и другой более сложный вариант. В js ф-ции animate есть параметр step это ф-ция отвечающая за один крок анимации. Вот пример з
дока:
$( "li" ).animate({
opacity: .5,
height: "50%"
}, {
step: function( now, fx ) {
var data = fx.elem.id + " " + fx.prop + ": " + now;
$( "body" ).append( "<div>" + data + "</div>" );
}
});
Тоесть Вы можете прописать в здесь все изменения, которые должны происходить с Вашем блоком. Ну там сдвиг влево/вправо ну и увлечения/уменьшения некоторых элементов. И в конце анимации поменять классы.