Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Анимация scrollа с инерцией. (https://javascript.ru/forum/events/61052-animaciya-scrolla-s-inerciejj.html)

Leon-on12 02.02.2016 17:31

Анимация scrollа с инерцией.
 
У меня есть различные массивы и ограничения что бы работала нормально но тут самая выжимка без лишних вещей.
Вопрос в том как устроить плавную анимацию дальнейшей прокрутки.
function down(evt) {
	evt = (evt || event);
	yDown = evt.pageY;
	tDown = new Date().getTime();
}
function up(evt) {
	evt = (evt || event);				
	time = new Date().getTime() - yDown;
	y = yDown - evt.pageY;
	speed = (y/time);            
	
}
function scroll(){

//??
document.getElementById("Scroll").style.marginTop = marginTop - speed*100;
speed = 0.9*speed;
//??

}

Вопрос как правильно сделать цикл выполнения scroll() до тех пор пока speed не станет 0 .
С самого начала у маня был setIterval который работал всё время.
document.getElementsByTagName("body")[0].ready = (setInterval('scroll()', 41)
По тому же принципу можно постоянно чистить этот интервал если speed < 0 и запускать заново на up(evt).

Попробовал зациклить setTimeout() вызовом в конце.
function scroll(){
document.getElementById("Scroll").style.marginTop = marginTop - speed*100;
speed = 0.9*speed;
if(speed > 0)setTimeout('scroll();',41)
}


Придумал даже такой ужас, но так и не рискнул проверить работоспособность.
for (var i=0;i <inumber;i++){
            setTimeout('scroll();',41*i)
};


Как лучше делать подобную плавную анимацию?
Задача для мобильного браузера. По этому как загрузить его как можно меньше?

рони 02.02.2016 17:35

Leon-on12,
всё что требуется здесь
js-animation


Часовой пояс GMT +3, время: 20:25.