Это может быть поздний ответ, но ниже приведена функция, которая не требует плагина фоновой позиции.
var animate = $('#element');
function loopbackground() {
animate.css('background-position', '0px 0px');
$({position_x: 0, position_y: 0}).animate({position_x: -5000, position_y: -2500}, {
duration: 12000,
easing: 'linear',
step: function() {
animate.css('background-position', this.position_x+'px '+this.position_y+'px');
},
complete: function() {
loopbackground();
}
});
}
loopbackground();
Посмотреть рабочую демонстрацию можно здесь: http://jsfiddle.net/kusg5mdg/
Редактировать ....
Я вернулся через 4 года, чтобы превратить вышеуказанную функцию в более многократно используемый фрагмент кода (потому что почему бы и нет? ¯ \ _ (ツ) _ / ¯ )
Повторно используемая функция пространства имен jQuery:
$.fn.loopBackground = function(options = {}) {
options = $.extend({
x: 0,
y: 0,
duration: 300,
easing: 'linear'
}, options);
var $this = $(this);
function loop() {
$this.css('background-position', '0px 0px');
$({ x: 0, y: 0 }).animate({ x: options.x, y: options.y }, {
duration: options.duration,
easing: options.easing,
step: function() {
$this.css('background-position', this.x+'px '+this.y+'px');
},
complete: function() {
loop();
}
})
}
loop();
};
Использование:
$('#title').loopBackground({
x: -5000,
y: -2500,
duration: 30000,
easing: 'linear' // Optional https://jqueryui.com/easing/
});
Рабочий пример здесь: http://jsfiddle.net/dmvpu06f/