Мне нужно выполнить метод javascript scrollTo(x, y) с анимацией. Я не могу использовать jQuery для этого.
Прокрутка с анимацией
Ответы (2)
Вы можете анимировать (почти) что угодно в Javascript, используя вызовы window.setTimeout() и window.clearTimeout(). См. http://www.w3schools.com/js/js_timing.asp.
person
Community
schedule
02.11.2010
function interpolate( source,target,pos ) {
return ( source + (target - source) * pos );
}
function easing( pos ) {
return ( -Math.cos( pos * Math.PI ) / 2 ) + 0.5;
}
function scrollTop( duration ) {
duration = duration || 1000;
var startY = window.pageYOffset,
start = Number(new Date()),
finish = start + duration;
var interval = setInterval(function() {
var now = Number(new Date()),
pos = (now > finish) ? 1 : (now - start) / duration;
scrollTo(0, interpolate( startY, 0, easing(pos) ));
if ( now > finish )
clearInterval( interval );
}, 15);
};
person
gblazex
schedule
02.11.2010