2015-12-03 2 views
0

Так что я сделал коднабор backgroundPosition и setInterval

function slide() 
{ 
    var x=1; 
    while (x<=512) 
    { 
     document.getElementById("slide").style.backgroundPosition = x+"px 0px"; 
     x++; 
    } 
} 

JSFIDDLE

Я хочу, чтобы сделать переход от backgroundPosition - 0 к backgroundPosition 512. Этот код выше изменяется сразу от 0 до 512, я хочу сделать это как 1 < 100ms break>, 2, 3 ...
Я пробовал изменить x++ на setTimeout(function(){x++), 100), но он ничего не делает.

+3

Хотя вы действительно можете сделать это с 'setInterval' в JavaScript, вы бы альтернативно быть в состоянии использовать ответ, который использует CSS-анимации? –

+2

Действительно, не делайте этого с помощью JavaScript. Используйте анимацию CSS. Взгляните на это для вдохновения http://stackoverflow.com/questions/16989585/css-3-slide-in-from-left-transition – msanford

ответ

1

Использование SetTimeout() и вызов функции:

function slide(x) 
{ 
    if(x==undefined) var x = 1; 
    if(x >= 512) return; 
    document.getElementById("slide").style.backgroundPosition = x+"px 0px"; 
    x++; 
    setTimeout(function() { 
     // recall function and add other code if you want. 
     slide(x); 
    }, 100); 
} 
slide(); 
+0

_Really_ minor nitpick - это должно быть 'if (x> 512)' для соответствия намерение OP или, еще лучше, сделать 'if (x <= 512)' перед вызовом 'setTimeout', поэтому вы сохраняете один вызов функции в конце. –

Смежные вопросы