2017-06-01 126 views
0

當用戶點擊這個按鈕,我執行此:如何在自動滾動到某個位置時更改滾動速度?

const myDiv = document.getElementsByClassName('someClass')[0]; 
myDiv.scrollTop = myDiv.scrollHeight; 

但它跳躍得這麼快,需要一定的時間,爲用戶重新定位自己的頁面。有什麼辦法可以逐漸滾動到新的位置(沒有jQuery)嗎?

回答

0

我不記得在那裏我從發現這個功能,但它的工作原理:)

function scrollTo(element, to, duration) { 
    if (duration <= 0) return; 
    var difference = to - element.scrollTop; 
    var perTick = difference/duration * 16; 
    var turn = element.scrollTop < to; 
    setTimeout(function() { 
    element.scrollTop = element.scrollTop + perTick; 
    if ((turn && element.scrollTop >= to) || (!turn && element.scrollTop <= to)) { 
     element.scrollTop = to; 
     return; 
    } 
    scrollTo(element, to, duration - 16); 
    }, 16); 
}; 

const myDiv = document.getElementsByClassName('someClass')[0]; 
scrollTo(myDiv ,myDiv.scrollHeight,400);