Показать сообщение отдельно
  #1 (permalink)  
Старый 02.02.2016, 17:31
Аватар для Leon-on12
Аспирант
Отправить личное сообщение для Leon-on12 Посмотреть профиль Найти все сообщения от Leon-on12
 
Регистрация: 07.04.2015
Сообщений: 65

Анимация 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)
};


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